What 200 Hours Buys You

Today, I attended UC Berkeley’s Korean 10A class. Korean 10A is the 3rd level Korean class in UC Berkeley, and would normally require you to take 2 semesters of Korean classes at Berkeley (Korean 1A and Korean 1B), but I blew through both level’s material through the course of summer.

I started learning Korean at the beginning of summer. I had started taking classes at the local Korean community center in San Francisco. I started out in the introductory course, Introduction to Hangeul. By the end of summer, I had skipped four levels and finished the fifth level of Korean. How did I do it? Simple, I spent over 200 hours studying Korean.

During my internship in the summer, I lived in Berkeley and commuted to San Francisco every day. Commute takes about 40 minutes one way, and during my commute, I worked through a spaced-repetition flashcard deck on the BART instead of browsing my Facebook news feed or Reddit. In 60 weekdays of commute I have accrued 80 hours. Korean class is three hours a week once a week for 15 weeks, giving me 45 hours of practice. The rest of the hours I completed in my own time. It took about an extra hour a day, and a lot of the time was completed by eating Korean food and practicing Korean with my Korean friends.

I’m not any smarter than any other Berkeley student who has spent two semesters studying Korean nor any other fifth term Korean Center student.

The Berkeley Korean class is five days a week for an hour. Class is 15 weeks, and you can expect three hours of homework a week. Do the math:


(5 weekdays/week) * (1 hr/ day) * (15 weeks) + (3 hrs/week) * (15 weeks) = 120 hours of Korean


Double that number for taking Korean 1B class and you end up with 240 hours of Korean, within the ballpark of the amount of time I spent learning Korean.

The KC Student takes an “Introduction to Hangeul” class that spans two hour sessions over 12 weeks. Subsequent classes are three hour sessions a week for 15 weeks with half an hour of homework every week, and there are four of them that span the topics roughly covered in the completion of the Korean 1B class in Berkeley.

Again, do the math:


(2 hr/wk) * (12 wk) + (4 classes) (3 hr class/wk + 0.5 hr hw/wk) * (15 wks/ class) =  234 hours of Korean


As you can see, they all roughly land in the same number of time spent studying Korean. Of course, there are differences. Because I studied more on my own, I probably have stronger command of vocabulary, reading and writing, but have more trouble listening and speaking.

So where can you dig up these 200 hours? Easy! According to my RescueTime stats, I have already spent 80 hours watching Youtube, 80 hours watching Netflix and cartoons, 130 hours on Facebook, amongst other distracting things this year. This doesn’t count the amount of time I spend on my mobile phone, since I don’t have activity tracking on my mobile device. I’m sure 200 hours is not difficult to dig up.

Screen Shot 2015-08-23 at 4.36.10 PM

I didn’t intend to write this to teach you how to learn a new language. I documented my progress to illustrate 2 main points:

  1. I believe it is unmotivating to measure progress by any other measure. Our modern generation is extremely impatient, and extended periods where no progress is made frustrates the modern man, even when that frustration is often part of the learning process. Measuring progress by time prevents people from wasting their time trying to find the “best” learning methods and resources when usually those methods and learning processes are discovered and refined as you work through sub-optimal solutions.
  2. “I spent X years doing Y” gives me little information about how skilled someone is at something. Three years of Spanish could mean once a week for two hours or living in a Spanish speaking country for three years. Yet we expect two people with “three years of Spanish” to reach the same level of fluency. The best way I can think to measure skill level is the number of hours people spend.

Some other things I bought with time:

  • ~200 hours of swing dancing lets me feel comfortable social dancing and teach swing classes at Berkeley.
  • I’ve spent about 150 hours for every computer science class I’ve taken at Berkeley so far.
  • According to this Quora answer, to reach fluency, you would need about 600+ hours studying a language to reach fluency. “Not hard, but long.”

I started a “Hobbies Calendar” spreadsheet that will help me keep track of new skills I learned. I would suggest something similar to track your own progress.

Normal calendar spreadsheet:

Screen Shot 2015-08-23 at 5.02.57 PM

Hobbies calendar spreadsheet:

Screen Shot 2015-08-23 at 5.02.39 PM

I just started this this summer, but I’ll start adding more hobbies as I pick them up.

To find out how you can put in the time to make your goals happen, read my Productivity Hacking Guide!

한국어 말하기 연습하면 연락해 주세요~

Lessons I Learned While Solo Backpacking Abroad

Lessons I Learned While Solo Backpacking Abroad



Instead of attending my 6th semester at UC Berkeley. I decided to take a semester off to travel abroad. I have had whims of this nature every spring semester now since I’ve entered Berkeley. My freshman spring I did rejection therapy. My sophomore spring I decided to hit the gym. However, this year my sporadic nature came early. By mid-way of my Fall semester, I’ve already yearned to do something new. I’ve highlighted some of the reasons in a personal note I wrote in November.

I started my journey in Taiwan. I went with two of my best friends. We explored Taiwan for 10 days before my friends headed back. I went to South Korea next, followed by Japan, taking a brief stop in Hong Kong, explored Southwestern China, journeyed through Vietnam, took a pit stop in Singapore, and eventually returned to Taiwan to relax for two weeks before heading back home. Besides Taiwan, all portions of my travel were solo backpacking, which meant I kept all my belongings in a 55 liter backpack. I stayed in hostels through the duration of the trip and booked transportation on the road. I made friends on the road but spent a large portion of my time alone. Now that my 111 days worth of traveling across Asia is over, here are some reflective points I came across.

Lesson #0: No one knows that you’re gone

Nor do most people care. I wasn’t intentionally being secretive about my plans. I told my travel plans to friends who asked what I was doing that semester. Yet, I still had many friends assume that I’ve been in Berkeley all semester now that I’m back.

People move on, and everyone has their own lives. It’s not to say that I’m unfriending every person who didn’t realize I was away. It’s just that it’s too selfish to expect everyone to be thinking about you all the time and miss you when you’re gone. A lot of things have changed while I was gone, and the world moves on without you. I’ve stayed in touch with a few friends from back home, and that’s been heartwarming to keep in touch. But even they have their own lives, and it would be self-torture to miss me this whole time. Sorry Anna Kendrick, you won’t be missing me when I’m gone.

After all, I didn’t intend on traveling to impress my friends or anyone. Traveling was a choice I made for myself.

“You climb to the top of the mountain so you can see the world, not so the world can see you.” – David McCullough Jr.

Lesson #1: Tourist attractions get boring really quick.

I remember taking a trip to Kyoto. I had purchased a one week rail pass that granted me access to all the high speed rails of Japan. I was hellbent on making the most of it, so I decided to explore 5 cities in that one week. I had allocated 2 days in Kyoto. For those of you who don’t know, Kyoto is the cultural capital of Japan. It has all the fancy temples and museums and monuments that are iconic to Japanese history.

I only had 2 days. If I don’t do these “must-do’s” now, I wouldn’t know when my next chance will be! So I rushed through everything. 2 hours for each attraction, with a shortest-path route from each temple to the next.

Except after the 3rd temple, it all felt extremely boring. Temples merge. Sceneries become dull, and I felt largely disappointed in every subsequent temple visit. In fact, my highlight of the two days there was meeting and conversing with a man feeding stray kittens next to the river when I got lost. 

My point isn’t necessary to avoid tourist attractions. I’d say I would have mitigated the boredom had I had someone explain some history to me. I realized through my journey that I really do like history. These visits would have been more enjoyable had someone explain the narratives behind them. Most plaques on the displays don’t do the history justice. Lots of context is needed. I’ve read many wikipedia pages in museums just to scratch the surface of what is really going on. 

My other point really is that short term travel is very different from long term travel. When you have a week to explore Taiwan, it’s what a lot of Chinese call “Hurricane traveling.” You’re like a hurricane, and you’re just trying to get everywhere at once, and all you’re left with is a mess, and exhaustion. Trying to do short term travels for long term vacations is just unsustainable.

Lesson #2: Take pictures of people, not places

“Take pictures of people, not places” was an advice I read somewhere, perhaps Reddit or Quora. I was thought it was true, but never really understand it until I started getting lonely. Solo-traveling is a lonely experience, especially for my first solo-destination — South Korea. I met an English teacher in Korea who phrases it best. “In South Korea, being single is a fate worse than death.” 

I felt so too. There’s a lot of social stigma for being in public places by yourself. I didn’t see anyone who wandered on the streets by themselves except me. Couples are easily spotted with their matching outfits. Good luck eating Korean barbecue by yourself. I got lonely and homesick real quick.

So, I spent most of my free time going to language exchange cafes to meet folks. And it was super fun. It might have even been the highlight of my trip in Korea. I feel like I understand cultural composition better through the people rather than scenes. After all, the best memories I want to photographs are those with the people I meet.

Lesson #3: The way into people’s hearts …

I know my travel companions tend to make fun of me for my travel preferences (I’m looking at you Alice Yuan). I’m always saying “I want to meet locals! I want to talk to folks!”. It’s a personal truism I learned for myself. I love people, and I believe it’s the best way to understand a place’s culture by meeting natives from the place. You would be surprised how easy it is to feel at home abroad. Just talk to some of the bros you meet on the road. Their idea of travel is to go a city, visit tourist attractions during the day, and party at expat bars at night. Hence, you could spend all your travel time never truly feeling like you’re experiencing a new world. Natives also tend to stay away from the tourist-y area, as they have their own lives far removed from the tourism industry. So, actually it’s pretty natural to get a packaged experience in a country abroad if you stick to the usual routes and places.

I’ve seen a few patterns that might get you more exposure to meeting local people.

Common Language

From my experience the easiest ways to connect with natives abroad is through common language, common interests, generosity, and children. Common language is by far the most immersive in meeting a wide-spectrum of folks. I’d had my fair-share of amazing conversations meeting individuals from Taiwan, Hong Kong, and China since I was able to speak Mandarin. It was harder to have those conversation with citizens from other countries. I’m sure there are equally interesting folks in other countries that would have made good conversational partners had I had the ability to speak fluently with them.

Common Interests

Another way to connect with folks abroad is through common interests. I’ve managed to befriend children in China and Vietnam by playing street soccer with them. I’ve performed a few magic tricks for strangers I meet, as well as play frisbee once or twice. Most excitingly, I have had gone swing dancing in every country I’ve visited. And it’s been nothing short of amazing every time. I meet other dancers, have a good time, and often they’ll invite me to get food with them after the dance! One day in Tokyo, I was figuring out what to do on a Friday night. I searched up TripAdvisor for activities since I was a tourist and knew squat about real travel. I found the top activity on the site. Tokyo Pub Crawl was one of the top activities that interested me. A mere $20 meant that you get to visit 3 bars in the scene, meet other cool travelers and locals, and ultimately, have an amazing time. The reviews didn’t disagree either. 5 star ratings had all claimed they had an amazing time. Unfortunately, I later found out that there was a swing dance event the same time as the pub crawl. I had to make a tough decision.

I ended up being an idiot and going to the pub crawl. Massive sausage fest, not to mention the pub is littered with other expats. I’ve met 2 Japanese salarymen there, every else out there seemed too bro-y for me (only interested in the opposite sex, generic small talk topics, etc). The music was too loud to make good conversations, and it was crowded. Fuck, after the first bar I decided to cut my losses and travel to go swing dancing. It turned out to be one of the best decisions I’ve made in my travels. The crowd was super friendly, and everyone was so nice to me. It was mainly Japanese natives, with a live Japanese band. It was at a bar, so there were drinks too. Everyone was excited to talk to me when they found out I wasn’t from here. I made conversation, danced with folks, and the gender ratio wasn’t shit! A couple even announced their engagement at the event! There was a jam and lots of happy Japanese folks in the room. Everyone dressed up very well. Easily one of my best nights while traveling :) Traveling has made me very, very glad I learned to swing dance. I really want to get better at swing now! I told all the folks I met that I would go back to dance with them.


Swing dancing in Tokyo

Bring your hobbies, your talents. They’ll no doubt draw people to you, or bring you to the people. I met a few folks with similar mindsets to want to engage with people. Some would bring a ukulele and play on the street until someone strikes a conversations. I’ve seen magicians perform street magic to meet local folks. If you like design, go to a design meetup, or find a Facebook group that has your interests. Find your people!


I feel so manipulative because I feels like this works 100% of the time. If I have food on hand, I try to share it with those around me. I found out that no one usually takes my offer, but ends up talking to me. It has lead to some great friendships.

Generosity really tears down any barriers folks have from talking to you, whether it’s food you give to the homeless, or helping an old lady carry her basket up the stairs. I met a traveler in Japan who has told me “If you look for it, you’ll always be able to find ways to give.” He swears it’s the best way he’s gotten over the language or hostility barrier.


Children are the easiest folk to talk to when I travel. They don’t care if you don’t speak English, or look creepy, as long you help them build a sandcastle, or play a game with them. Their limited vocabulary matches mine, and they’re easily entertained. I let them play with my iPhone, and sometimes I teach them how to take selfies. If parents see you get along with kids, they’ll feel at ease to talk to you too. Pets work too, but unfortunately I’m not so hot around pets. I like kids more.

Lesson #4: Always look for ways to give

I met a traveler in Fukuoka, Japan. He’s one of the only people I met during my journey who I would call a real vagabond. His biggest theme while traveling is to find ways to give back. “If you seek help, you will always find someone willing to help you. Similarly, if you’re looking for ways to give, you’ll always find people who need help.” I decided to try to follow his advice for the rest of my trip, and I’d have to say, spending time and money helping others has been some of the most rewarding experiences I’ve had.

 In terms of charity, though, I never give out money. It’s just a policy of mine to prevent myself from thinking they’ll put the money into misuse. I also find ways to give to others without being asked. It makes me feel more comfortable and more proactive about my actions. Often, I hand out my leftovers to beggars. Once, I bought some mangoes to eat at my hostel, but decided to give them to a mother and her child who were in rags.

I believe escaping self-referential happiness has increased my capacity for love. I remember back in Berkeley I’ve had conversations about deep relationships like kids or marriage. Someone said having kids or a spouse is like having your heart leave your body and now running around having its own thoughts. I certainly didn’t feel comfortable with that thought. I can barely control my own emotions and circumstances to make myself content, why should I spend time to think for others?


Because I think it’s worth it. Thinking for others made me worry for others. It made me think for others and feel their pain and suffering and their circumstances, which is often not very bright for most folks I meet in Asia. But I also get to share their positive experiences too! I feel genuinely happy when good things happen to good people, even if I personally wouldn’t consider those accomplishments particularly shiny or worthy of celebration. That’s the nice thing. I’m a largely pessimistic and jaded person when it comes to what people do, but when I like someone, I couldn’t care less what they do or what they accomplish. I just become happy when they’re happy. And most folks I meet are happier than me.

Lesson #5: Hostels > Hotels

I was a big fan of AirBnb. Their sleek interface caught me off guard when I first used it, and of course, I’ve had nothing but positive experiences when I booked through the site. However, it completely robbed me of the opportunities to meet other travelers. I meet lots of interesting folks at the hostels, and we always share stories and experiences together. A common day while travel would be to wake up and eat breakfast at the hostel, and make friendly conversations with folks at the table. We would figure our respective itineraries to see if anything overlaps. If things align and there’s rapport, we usually head out together.

I love one-day travel dates. It’s basically spending your day with another person while wandering around the city. You make small talk, understand each other’s background and culture, and share a unique experience together in a foreign land. I learn so much about European modern culture by all the Europeans I meet abroad. I try to convince every travel I meet to go to Taiwan (see lesson #19). My general curiosity is how folks go about traveling and living their lives. I wanted to see what they do to maximize their experience abroad.

Besides the lack of privacy, most hostels are very clean, safe, and modern. You won’t be disappointed!

Lesson #6: Talk to other people before they talk to you

Someone I met once told me about the kinds of people he meets in India. “Either they want to scam you or they want to be your best friend.” I agree with his sentiment, even applied in places like Vietnam. As a general rule of thumb, if people approach and talk to me, I have a stronger suspicion than if I directly approach them. How I statistically understand it is that most people are good, so you picking a random person in a crowd will be a 1% probability that you pick a scammer. But out of all the people who talk to you, there’s probably a larger than 1% probability that they are a bad guy. 100% of bad guys talk to you, whereas maybe at most 5-10% of all the good people will talk to you. Add all those people together, and the chances that out of a random person you pick who talks to you, the chances that they are not good-doer is probably a lot more than 1%. Hence, I try to talk to people. Plus, there’s always something to say. Say whatever comes to mind.

Lesson #7: You spend a lot of time alone

You spend a lot of time alone. After all, you’re on this journey by yourself (I presume). You become pretty comfortable being alone for long periods of time. Independence is a skill I would say is useful, you spend a lot of time with yourself.

You get a lot of time to reflect. Or not. Honestly reflection didn’t necessarily entail actual thinking or progress. I usually have philosophical thoughts in the form of conversation or debate, as then I can strengthen the way I express my thoughts and values. But since traveling, there have been some things I started to build intuition for without knowing exactly what it is or what I accomplished. Some say it’s a waste of time or that I’m spacing out. Even I would sometimes say so myself. But really I felt more at peace with myself.

Lesson #8: Bring a habit with you

One of the things I missed most while I was gone was having some sense of direction. Of course, that’s partially intended. I had left my daily routine to experience new lifestyles. However, at one point my life felt very directionless in my day-to-day itinerary. In a lifestyle where there are no constant, it helps to have some small routine you cling on to. For some folks it’s that they exercise abroad, for others they read before they sleep. Some bring some kind of project to work on with them. I believe it really helps when you do long term travel to have some structure.

Lesson #9: Stay longer in each place

Next time, I would probably pick fewer locations and stay at each one a bit longer. I make a lot of friends during my travels, but many of them I don’t meet up with them more than once. It’s quite sad sometimes to think about it. Relationships can only go so far with a one day experience. I tend to have shallower relationships abroad, no matter how much I try to fix it. 

Backpacking long term is also exhausting. Just imagine every day you have to pack your stuff, travel to a different location, find a hostel, and unpack. Travel fatigue got to me real bad while I was trekking Vietnam. I’m suppose to “travel” Vietnam in 3 weeks (that’s how long my visa lasted). I bused everywhere, and never stayed at a place longer than 3 days. It was exhausting trying to catch the next bus or to visit all the attractions. At one point in Dalat, Vietnam, I stayed 4 days just to rest and avoid any tourist attractions. I would wander the city at day, maybe lounge at a cafe, and head back to my hostel to make small conversations with other travelers. It was nice, and I relax and not constantly thinking “What should I do right now? Where should I go?”.

 My longest stay was at Taiwan during my last 2 weeks of my travel, and that lifestyle was more than pleasant, and probably more sustainable. I wouldn’t consider myself bumming around that time. I took things much slower and enjoyed things more thoroughly. On top of that, I met some amazing group of friends in Taiwan. And because I was able to stay longer (2 weeks is the longest I ever stayed in any city), I was able to spend lots of quality time with the folks I met there. No doubt if I stayed for a month in Taipei (or anywhere for that matter) I would have an amazing time and meet interesting people.


Friends I made in Taipei!

Taipei love!

Lesson #10: Explore subcultures, not culture

When I was visiting China and converse with folks, I would ask them questions like “What’s it like living in China?”. Many of them didn’t particularly like the question, since it implied culture was uniform and identical throughout China. Similarly, generic questions like “What is Korea’s dating culture like?” has sparked equally broad answers. It feels impossible to grasp what a country’s “culture” is like without diving into a subculture, since each place is too diverse of a place to have a satisfactory summary of what it’s like in each place. Just like how Californian culture is a subset of American culture, Berkeley culture is a subset of California culture, etc. 

Knowing American culture doesn’t cover the breadth and depth of culture that it has to offer, so spend more time and effort getting into the subcultures. I spent a couple of days in Akihabara, Tokyo being absorbed and fascinated by the arcade gamers who dwell there and their habits and tendencies. Trying to paint a stereotypical Tokyo perspective wouldn’t have done those Otakus (Japanese social shut ins) justice on what Tokyo is really like. To understand the big picture, you have to piece together bits and pieces of smaller communities that constitute the whole city.

Lesson #11: The simple life

As happiness expert Dan Gilbert would claim, people are poor judges of what makes them happy, and I certain believe that’s true. Especially when I think I figured out the formula to long term happiness, I find myself at a loss pretty quickly. A met a few folks and had a few experiences that brings some interesting points on this topic of discussion:

  • I met a girl in China whom I had a few philosophical debates with. I could speak decent Chinese so conversations flowed pretty naturally for me. As much as I would like to call her a simpleton, she largely drew similar values in philosophies in life as me. Often over-analyzing a particular thought process would result in her telling me “Doesn’t thinking that way make you tired?”. I would say not really, since constantly thinking has been a particularly rigid habit of mine. But it doesn’t usually doesn’t resolve much. She just does things that make her happy, and that’s something I try to emulate. We would eat at a restaurant, and she would say stuff like “Wow! This food is amazing! I’m so happy I’m able to eat three delicious meals a day!”. Yes, I never thought about that. Simple things we take for granted sometimes bring us the most joy. Afterwards, I told her that one of the favorite feelings in the world is peeing after having to hold it in for a long time. She tells me I’m gross. I think it’s one of the easiest ways to feel happy. I think it’s gratitude at its finest.
  • I met a 74 year old lady who sells bottled drinks at the top of Moon Mountain in Yangshuo, China. She would genially ask you if you want water as she sits on one of steps with a straw cushion that is probably less than half a centimeter meter thick. Not many folks visit Moon Mountain, as I don’t meet many folks on my one hour hike upwards. I’m sure it ain’t easy being the only vendor on top of this mountain, especially since I imagine it involves a lot of time sitting here alone by herself, and hiking the mountain every day (she takes 2 hours to hike every day, taking breaks along the way). Anyways I made conversation with her and she was nothing short of senile and bubbly. I don’t feel happier because I pity her lifestyle. I genuinely envy her for her attitude to be smiling all the time. This is what Chinese folks call “poor happy.”
  • I never realized how little I needed to get by with while abroad. I brought two sets of clothes for my entire trip, and it has served me more than well. I didn’t even have to acquire any of those special backpacker gears like ultra-light jackets or hiking boots. All I really needed was the clothes I wear, and my laptop. It was nice knowing exactly what you’re going to wear the next day — whatever you aren’t wearing on you right now.
  • Call me old, but some days I just like enjoying good weather by taking a walk outside. It usually comes with feelings of gratitude, nostalgia, or general awe of the world.


Lesson #12: Traveling is largely independent of where you are

When I came back to Berkeley, lots of friends would ask me “James! You’ve been to so many different places during your travels. Which country/city was your favorite place?”. I don’t want to sound completely above geographic location, but the biggest distinction between my experiences was largely due to the people I met or my travel style. For example, one of my favorite experiences happened in Fukuoka, Japan. I took the trip to Fukuoka for no other reason besides that it was close and I wanted to say I went, but the place itself was pretty lackluster. It felt just like shopping malls and sidewalks. I actually called the day early to head back to my hostel, but there I met someone who took me to a local bar (a random one just right next to the hostel). I ended up having one of the best times of my life singing karaoke with middle aged folks at a bar. Lovely folks. Had I not met this man or gone to the bar, I would have left Fukuoka telling all my friends how boring and lackluster the place was.


A quote that I read from Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel summarizes the wisdom nicely (I’m paraphrasing here):

“I have two friends who have a policy that they wouldn’t leave a place until they start having fun. Now they’re both stuck in Brisbane” – Rough Guide

Lesson #13: Good traveling takes practice, and you get better at it

As a corollary to the previous lesson, I also have increasingly positive experience with each subsequent destination I went to. Of course, it’s possible that countries really do rank in the order of which I travel (sorry Korea), but I think it was largely in part of my travel style.

I did not enjoy Korea as much as I think I could have, I believe I made a few debacles that took away from my experiences, including:

  • I booked a private room on Airbnb, which was more expensive and less social, so I didn’t get to meet any other travelers
  • I went shopping too often
  • I didn’t talk to enough people
  • I only went social dancing once when it should have been every night
  • I should have explored other cities in Korea

And other stuff. I get slightly better at everything with each subsequent destination. It takes practice, and you get better and searching for positive experiences as you do it more often. I know for sure I haven’t learned enough about traveling to seriously consider myself a traveler, but I know now there’s a way to get better. Through experience.

Lesson #14: It sometimes feels like you’ve been traveling with one person the whole time

I realized how hippy I sounded when I came to this realization myself. I did have the sensation at some point that everyone was connected in this universe by some mystic force. The thing is I move around so often that I start traveling with a large array of individuals. I would spend at most a couple days with each person before having to say goodbye and part ways. This has happened so many times that often instead of starting a relationship over from strangers with a new travel partner, I implicitly carry over the previous relationship I’ve had. It has worked well for me simply because other travelers are comfortable with the friendliness.

Lesson #15: Holy f*ck am I happy to be me

Seriously, I have several attributes that make me stand out when I travel:

  • I’m usually the youngest, since most of the folks I meet are mid 20’s to early 30’s. I get a lot of “I wish I traveled when I was younger” or general things meant for precocious kids.
  • I’m also usually the only Asian traveler. Most folks I meet are white. My guess is Asians tend to feel more responsibility and duty towards their career and finances and taking care of their families. My family is happy and well, and I am grateful for that.
  • Largely financially independent. Most travelers I meet are traveling in between jobs or have much shorter time to travel than me. Some are looking for jobs abroad, and some are between jobs. Some folks try to save money while traveling, and have to consider costs when abroad.
  • I love the jobs I held. Lots of folks traveled because they’re between jobs, and sometimes that’s because they hated the desk jobs they had. Seriously soul killing. I’m glad even when I could be completely career focused in this point of my life, I took semester to travel.
  • American citizen. Sometimes I implore folks to visit me in California, but as ____ they aren’t as open to travel to other countries. For example, Chinese citizens have very strict visa restrictions when visiting other countries.
  • I love how I grew up learning Mandarin and English. Everyone think Mandarin is one of the most difficult languages in the world, and I agree. It’s just so cool to meet other people who are practicing tones in Chinese, when it feels so natural to me.
  • I consider my background special as a Taiwanese-American. I generally have interesting things to say or at least tidbits of knowledge I share with everyone I meet. I’m not a bad conversationalist.

Consider this some serious bragging or some self-reflective gratitude, but I am happy with the circumstances I find myself. I consider myself more than fortunate.

As a silver-lining, I meet plenty of travelers who also live content lives. They have more than mediocre lives back home, but at some point in their lives they decided to move abroad and teach English. Seriously, that gig abroad is lucrative. Not just financially, but for almost everyone, it has enriched their lives. I never met any English teacher abroad who didn’t like their jobs, and I’ve met quite a few abroad.

Lesson #16: I love Taiwan!

I like to joke to my friends that I went to Taiwan to collect bits and pieces of my childhood. Rightfully so, since I had spent a large portion of my childhood in Taiwan and Shanghai (~7-8 years cumulative). There are things that I encounter there that bring crazy bring up crazy amounts of nostalgia. “Oh! I used to eat this all the time!”. “Whoa! I’ve been here before!”. “I remember you!”. “I’ve heard this song before!”. I fricking love Taiwan! My dad has told me, “Do you know what the most beautiful scenery in Taiwan is? The people.”

Completely biased opinion — Taiwan is my favorite place to be. Here’s why: 

  • It has amazing cheap food. Korean food is about 1.5x the price of Taiwan, and Japanese food is about 2x the price. More importantly, they seem to do every cuisine justice. I’ve eaten delicious Korean barbecue and Japanese Teppenyaki in Taiwan. Taiwanese food itself is a delicacy as well, since you simply cannot eat everything that a night market has to offer. Multiple trips are required to even attempt to try all the “must-eats.”
  • Customer service is so good. On par with Japan. It’s partially/largely due to the fact that Taiwan was once under Japanese occupation for 50 years, with large amounts of Japanese culture and values instilled into the population here. Nonetheless, I’ve had amazing customer service here out, from the street vendor grandma who asked me how my food is to the barista who was genuinely apologetic for making me wait a minute while she was making coffee for another customer. One time my cousin invite me my two friends Alice and Dylan to hotpot. The waiters and waitresses there are trained that every time they interact with you, whether it’s to take your order, give you food, or help you pick up your dropped chopsticks, to have to give you a 90 degree bow. Holy crap! They must throw out their backs doing that on shifts. Even the manager bows.
  • People are super friendly and nice. It’s a very nice and delicate balance that Taiwanese folks have striked very well between the politeness of the Japanese with the unashamed upfront-ness you encounter in China and Hong Kong. I’ve had experiences with folks walk with you to your destination, or old grandmas approach me when I look lost.
  • It’s a super safe country. I could bike back to my hostel at 3AM and not feel any worry about muggers on the streets. There are always people on the streets and the place doesn’t feel dangerous at all. People feel completely at ease here.
  • If you want Chinese culture, go to Taiwan, not China. Many of the folks I met China agree. A large portion of ancient Chinese culture has been destroyed by Mao Zedong, and often what you find in Chinese cities these days mark a new Chinese culture, very often devoid of ancient traditions and values. I don’t think you see that kind of cultural destruction in Taiwan. A lot of tradition is still practiced there.
  • Compact. You can take a day trip to the mountains and come back at night. There’s the high speed rail that runs the western perimeter of Taiwan and the normal railway that runs the eastern perimeter. West side Taiwan is largely urbanized, whereas you can see very beautiful landscapes on the east side.
  • Taiwanese history is quite interesting. It’s worth taking a visit to the National Palace Museum in Taiwan, which holds more Chinese artifacts that the Beijing National Palace museum. Have a friendly discussion with any local over the history of Taiwan and they’ll bound to tell some cool things you never knew about Taiwan, including why Taiwan is called “Republic of China” whereas China is called “People’s Republic of China.”


I’m very proud to say I’m Taiwanese. I definitely feel more in touch with my cultural background after my trip.

Lesson #17: The Curse of the Traveler

If you haven’t heard of The Curse of the Traveler, now is a good time to read about it. Now that I’m back in the bay, I’m already starting to miss bits and pieces of lifestyle from the places I’ve been to. I loved the idyllic lifestyle Vietnam had to offer. I craved the expansive nature of China. I miss all the friends I met in Taiwan. Food everywhere.

It also wasn’t easy to convey travel sentiments properly to your friends back home. All I can do is resort to generic terms like “cool” and “awesome.” I do seriously wish my friends were there to experience the things I did, but they weren’t. Thoughts like this seriously make me reflect how connected yet alone we are in the world. Traveling is happiness tinged with nostalgia and some loneliness.

Lesson #18: You had to be there

My final thoughts, as cliche as they’re supposed to be, are “you have to be there.” Travel advice doesn’t pass on to individuals well besides pointing out what to look out for. Your old world looks a lot smaller from the outside.

Let me know if you want to meet up. I’m happy to share more about my experiences or give advice to folks who want to do similar things.

Suggested Reading:
Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel – Rolf Potts

The Rough Guide to First-Time Around the World – Doug Lansky

Why I Am Taking a Semester Off to Travel

Coming into Berkeley my freshman year, I would have never thought I would be taking a break from school. I was ecstatic to immerse myself in the environment of one of the best university in the world. I was gung-ho to make it the best experience of my life.

And yet, it has only been a month since I decided I wanted to take a semester break. I took some time to think about my decision, and ultimately decided this was for the best.

For those of you who wondered why I’m making this jump, let me enumerate my reasons.

Life too on track

I remember having a conversation last year with my former roommate, Patrick. He told me that my life was too on track and that the best antidote is for me to drop out of school.

I thought about that for some time, and decided that Patrick was right. I honestly have no complainable worries. I don’t have the same problems most young adults have. I have a great set of friends. I don’t have to worry about my grades. I’m one class away from being able to graduate. No dependencies or responsibilities. No kids, wife, or girlfriend; sick family members or pets. Pretty good job security for the foreseeable future. Nothing to complain about.

Most people who see my life would say that I’m set for life. While the comments are intended to be positive reinforcements of what I accomplished during my time at Berkeley, I can’t help but feel stagnant. Somehow, the imagery of where I will end up in 5 years is too vivid. That scares me.

Because I have no obligations (personal, academic, financial), I get to diversify my experiences. This is a rarely time and opportunity in my life to have so much freedom and mobility, and I intend to take advantage of it fully. My second biggest fear of my travels (the first being putting my health in danger) is actually that I’ll fall in love abroad and never come back. That kind of obligation would ultimately end my journey.

UC Berkeley/Silicon Valley: I’m not quite sure why I’m here

I attended an advising session today to learn that I was actually one class short this semester from being able to graduate! That’s crazy! I was actually going to complete a class that completes the requirement this year, but ultimately got kicked out by the overfilled class. My realization led to two thoughts


  1. I’ve always been busy here at Berkeley. I’ve taken all the classes that interested me, participated in every activity and club I could possibly fit into, and rushed through my experience in a way that left very little to be savored. I could have graduated in 2.5 years!
  2. Staying in Berkeley now is largely of my own free will and choice. Given it’s the default choice, I should more consciously consider why I’m here. This ultimately leads to the question “Why am I here at Berkeley?”

There’s something about junior year that feels too similar to sophomore year. Maybe I’m little burnt out, but it also feels like I’m going with the inertia of the decisions my sophomore self made. I need time to understand what value I can get out of my time here.

When I was a senior in highschool, I thought I wanted to be a tech entrepreneur. I wanted to change the world by building a social networking site that facilitated young adults to meet up. After some years pursuing this goal of mine, I took some serious thought over what I really wanted. I think I romanticized the idea of being the next Zuckerburg, or was infatuated with the idea of being in a news article, none of which brought me any permanent joy. After continually being exposed to the startup culture in the bay area, and seeing both the grand optimism of tech startups paired with the amount of bullshit in the scene, I admit that maybe, right now, tech entrepreneurship isn’t for me.

For one, if I wanted to change the world, there are other ways of doing so with equal merit and impact (more on that later). Similarly, if I really just wanted attention, I could have pursued other careers. Being in the Bay Area has subtly limited my scope of possible ways to pursue my goals. Want to educate children in 3rd world countries? Built an education startup. Want to change government policy? Start a company. For those who don’t live in the bay area, know that these types of conversation occur more often that I would like.

I like to think of the mentality as this way: Ask a 10 year old what he wants to be when he grows up. The 10 year old eagerly says, “I want to be a policeman!”. That’s cute, most parents would say. But most parents wouldn’t take their children seriously. What does a 10 year old know? Does he know being a policeman involves a lot of office work? Many policemen never get to live the lives they see on television. Do 10 years old know that they are other jobs? Like being a computer scientist? Or a radiologist? Or thousands of other jobs that he had failed to consider or realize? What does that say about the 10 year old, who’s presumably dead set on being a policeman? I’d chuckle and say “that’s cute” too.

I believe that’s a similar reasoning that can carry well on into the 20’s of one’s life. How can one say for certain what they want to do for the rest of their lives if they’ve never tried other things? I don’t intend of being an ageist. Experience correlates with age, and frankly I don’t think I’m old enough to say I’ve experienced enough of life to know for certain what I would do when I’m older.

I lived in the bay area for almost 10 years now. Before those 10 years, I had regularly traveled around the world, roughly once a year (I had moved countries 7 times by the time I was 10). I believe traveling will allow me to step back from the environment to evaluate it for what it’s worth, and at the same time explore other cultures to see other possible pursuits as well. Hopefully, when I come back, I’ll have a better idea of how I want to spend my time in Berkeley/Silicon Valley.


The Black Swan Events

Some of the most significant events in my life are largely due to random chance, whether it’s discovering computer science, finding a romantic partner, or stumbling across profound wisdom.

Nassim Taleb, author of The Black Swan, coins the term “Black Swan” to describe such events — highly impactful but largely unpredictable events. Black swan events shape our day to day life when we’re exposed to them. Yet, one is rarely going to meet their soulmate if they study in the library all day. I would not have learned about computer science as a career choice had my friend not invited me to a tech conference, and he would not have invited me had I not written a blog post about doing things you love in high school.

So your “luck surface area,” or the amount of exposure you have to lucky event, is largely a matter of personal choice. Being in an environment I’m largely familiar and doing things I already do, I haven’t had many lucky breaks. That’s why I’m going to explore new possibilities for activities, and meet new people across the world.

Success (however you define it) comes from expending energy on the right ventures (ventures broadly defined). The problem breaks down into two general steps. 1. Finding out what think success is and the right way to pursue it and 2. Execution.

I’m still in phase 1, so it’s best to find out more information and ultimately decide what I want in life and the right way to do it.

Since I’m in phase 1, I’m purposely diversifying my experiences to expose myself to more black swan events, and see what is feasible.

The Trip: The Details

I’ve read that your trip around the world so revolve around activities, not places to visit. Considering that, here are my top goals for my trip.

  • Physical Peak: I’m still young (I hope), I want to reach my physical peak during my trip. This means doing lots of physical activities like biking, skiing, snowboarding, snorkeling, Muay Thai, dance.
  • Be a Good Dancer: Some of my favorite moments in Berkeley have been involved in the dance community, and I want to pursue it further. I love learning kinesthetic skills, so dance is a great traveling pursuit. I also believe dance communities around the world are a great way to dive deeper into each culture.



I want to thank my family and friends for supporting my decision to a semester off.

I want to thank my parents for being supportive of the journey. I always feel super lucky and grateful to have my parents. Both of them grew up in rural Taiwan in relative poverty. They worked extremely hard to give my siblings and I the opportunities they never received when they were young. They sure as hell never traveled the world when they were in college.

I want to thank my sister, who is vicariously living her traveling dreams through me.

I want to thank all my friends, who either were supportive of my plans or were concerned enough of my well being to talk me through it.

The funny thing. I’m scared shitless.

How to Keep Your Friends

Table of Contents

How to Keep Your Friends


Part 1: Building a Great Network

Structural Analysis of One’s Social Network

The Environment Factor

How to Be a Good Friend

Starting with Generosity

Building Trust

Showing Gratitude

Establish Relevancy

Part 2: Planning Social Interactions

Planning a Date

On Spontaneity

Argument for 1-on-1 interaction

If you must go threesome or more

Post Date Procedures

Handing Out Rejection

Part 3: Increasing Your Collision Rate

Liking Their Facebook Posts

Offering Help

Asking for Help

Asking Them For Advice

“…Reminded me of You”

Going to High Collision Places

“My Calendar Told Me To Say Hi to You”

Inviting Yourself to Events

Some Softwares for Staying in Touch with Friends

Bonus: Advice for Incoming Freshmen

Conclusion: Make Time for Your Friends!

How to Keep Your Friends

Keeping your friends is difficult. I have made quite a number of friends (and I’m sure you have too), but I really haven’t been able to stay in touch with a majority of them. My Facebook was like a graveyard of past relationships, a relic of my former social life. There is a plethora of resources online and in print that teaches you how to make friends, and I think they’re worth a read. However, I haven’t seen many (if any) materials that focus specifically on retaining your friends, and I think keeping one’s network of friends is important. I’ve had a lot of trouble keeping in touch with everyone, and often I have lost friends because of my ineptitude to stay in touch with them. I don’t want this to happen to people. I want everyone to cherish the friendship and connections they have and be able to scale the size of their networks without compromising the quality of each relationship. If people stopped losing the friends they have, then people wouldn’t feel so lonely to compel them to constantly seek new friends (although new friends are always nice)!

If you ever feel like you’re not as close to your high school friends, this guide is for you.

If you ever bump into someone you lost touch with and have to make that awkward decision on whether or not to pretend to know then, then you should read this.

If you’re in a new environment and are making tons of friends, this is for you too.

If you share the struggles of staying in touch with everyone and want to keep new friends you meet, read on!


Maintaining a Social Network could be crudely broken down into three parts of the guide. Being a good friend, planning out social interactions, and increasing your collision rate.

Part 1: Building a Great Network means creating a social network that is fairly low-maintenance. A bad network could mean spending all your time with your time catering to a specific person or group you don’t particularly fit in with. A great network is a network in which someone who can resume the same level of intimacy and friendliness with his friends even after a hiatus of not seeing each for a while or keeping a distance away. A bad network is one in which you constantly lose touch with people left and right, and people thinking you don’t want to be friends with them.

Part 2: Planning Your Social Interaction is a new form of handling one’s vast social network. This isn’t an Amish community anymore, you’re no longer just dealing with the 150 people in your village, your network could span hundreds to possibly even thousands of people. You have to find some way to organize everyone. Well, thank goodness for Google Calendar (or whatever calendaring software you use). Social interactions are much more manageable now that you know exactly who to reach out to and when. Never forget an appointment and never lose a friendship.

Part 3: Increasing Your Collision Rate: Having to keep everyone on your forefront of your head is very hectic. How does one remember how to stay in touch with someone? What are some easy ways to keep cycling through various peoples in your lives? How do you increase your “bumping into” rate?

Note: My personal objective for writing this guide is to inform the general public because I think it’s valuable knowledge. Another more selfish reason is that I hope my old friends and possibly strangers read this and reach out to me so I don’t have to do all the work reaching out to them. So if you would like to talk to me, please do so! I’m friendly!

Let’s start!

Part 1: Building a Great Network

Not everyone can start at this point, but if you’re still building a network or if you’re still meeting new people (which you always should anyways), it is always better to set the initial relationship as a friendly and maintainable one. This section starts off with a discussion of the structure a good social network, followed by the meat of this section on how to be a good friend that makes you accessible, trusted, and remembered.

Structural Analysis of One’s Social Network

Most individuals either choose to have several close friends that they always hang out with, or have tons of acquaintances that that they cycle through. Each network has its advantages and disadvantages.

Having close friends is no doubt essential to one’s social and personal well being.  They are most likely there for you when you are sick or if you need a ride from the airport. They are very emotionally accessible, which means you can comfortably talk to them without a long “easing-in” time. They have a strong relevancy in the forefront of your mind and theirs. You guys spend a lot time with each other.

However, the most important disadvantage to having a circle a close friends is the fragile nature of these relationship when things go wrong. For example, I noticed that people may make bad choices in choosing their “close friends”. Many times the foundation of a close friendship is structurally unsound. For example, a friendship built on prior history is unlikely to last, like childhood friends who grow up with vastly incompatible personalities and interests. They may stick together because “they’ve been best friends since 2nd grade,” but that shouldn’t be the main reason why person A would want to be with person B. Another foundational trap people may fall through when deciding close friends is people’s desire for comfort. A friend may not be your close friend, but he’s the closest relationship you got, so therefore you call him your close friend. Another friend you may not particularly like, but he lives on your floor or he’s in your class so he’s accessible. I don’t think this is a good model for choosing your close friends. If you fall into these traps, you can end up in subpar relationships. Not only that, due to your complacency in the relationship (desire for comfort exceeds desire for quality friendships), you’re less likely to look for new connections that can save you from your disastrous relationships.

Only having a group of close friends is dangerous because the consequences of anything going wrong compounds the damage multifold. Suppose you date someone within your group of friends, and you break up. Now, if this causes friction within your circle of friends and you become ousted by the group, you have much less social support since you didn’t take the time to build other connections. Similarly, this is the main reason why the November rule exists. The November rule is an unspoken rule in most college campus that roughly follows the saying: “Never date a freshman until November 1st of the school year.” The idea is that if a freshman jumps into a relationship so early in their educational career without building a robust network of friends, they are likely to suffer more if the relationship goes awry due to the lack of social investment. The other reason is the misattribution fallacy, which means the excitement of novel experiences is misdirected at an individual, believing that their lover is the source of the physiological arousal, but I digress.

Taking a grim example, stability is often the justification individuals in abusive relationships use. They tend to incorrectly believe that at least they’re with someone or that they couldn’t do any better. The thought of being alone scares them enough to choose to deal with a bad relationship than try a new one. I think having close friends is so important that one should not put up with unsatisfactory relationships. 

Jumping to the other end of the network quality spectrum is the “acquaintances with everyone, friends with none” guy. A wide-network can be useful since your network reach tends to be span very widely across various groups. It solves the problem of only having a small group of friends. If things go wrong, you can just join a different group, or hang out with different people.

At the same time, these types of networks tend to spread resources particularly thin and damage each individual relationship. It’s hard to devote much time to anyone and most relationships end up only skin deep. These individuals, who don’t belong in any one group, can actually feel much lonelier in group settings even if they’re surround by people they know. They lack the intimacy and closeness of developing stronger friendships, and therefore constantly have trouble finding someone to connect to. They tend stick to formalities like the “Hello! How are you doing? Fine. Thank You. Bye” routine when they see their friends. If you employ a large-spanning social network, be prepared to be excluded from a lot of group events, gossip, and “bonding  time” because people assume you’re not really part of their group, you’re just a social butterfly.

I current have a social network that is a good mix of friends whom I’m extremely close to as well as a fairly large accessible network. I employ Pareto’s principle when it comes to friends. I roughly spend 80% of my time with 20% of my friends, and divvy the rest of my time with the rest of my friends. Most of trouble with maintaining this network comes from staying in touch with the larger outer circle of friends that I don’t spend as much time with. Part 2 and Part 3 of the guide are the most directly relevant sections to the “outer circle” of friends.

The Environment Factor

Contrary to what many people tell you, environment plays a big role in how your social life is structured. The size and quality of your social ecosystem forces you to adapt in certain ways. This will be most notable in Part 3: Increasing Your Collision Rate, but will also touch upon Part 2. Just to illustrate the point using an example, consider the difference between living in a college setting versus a working setting. You are less likely to bump into a fellow friend when you’re working, and more likely than not coordinating activities will be more difficult (fewer clubs, longer distances between individuals). I’m not going to enumerate the ways to adapt to each environment or demographic. I trust in your intuition on what it takes to adjust accordingly. If you have questions, you can ask me :)

How to Be a Good Friend

Being a good friend is so integral to one’s relationship health because it withstands the tests of distance, time, and other complications. Being a good friend means people are comfortable talking to you after 2 years of silence. It means your friends will approach you to talk about sensitive or vulnerable issues. Vice versa, it entails you having less friction to reach out to people. Overall, it means you maintain similar levels of intimacy from each successive meetings, independent of distance, time, and other complications.

Starting with Generosity

One of the key points to building great friendships is to offer help. My friend Gerald has once told me to build a network out of generosity, not out of potential benefits. When those words came out of Gerald’s mouth, I thought it was more agreeable but less doable. “What can I offer to others that will be valuable to them?” I thought. But you would be surprised. Generosity doesn’t always have to come in the form of financial benefits or “networking.” In 90% of the friendships I’ve made, “generosity” simply comes from your ability to listen to their problems and to empathize with them. We are stuck in such a self-centered and narcissistic culture that we failed to consider the feelings and problems of others. So many people just want someone to listen, and this indulgence is something everyone can provide but rarely anyone does.

Once I got the chance to catch up with my friend Alton, and before I could even talk about our personal lives, he asked me what are some of the problems I have right now. I told him my problems, and I told him there wasn’t much he could do to help me. He knew he couldn’t do much to help my personal issues, but he actually sat down, took out a piece of paper, and tried to see how I could tackle this personal problem. I felt so grateful after the meeting and I went back to talk to him about why he chose to help me. He said, “Shortly after meeting someone, I will push to find 3 ways in which I can help them.” I never forgot the help I received from him, so I’m sure people you’ve helped are less-than-likely to forget you if you help them too. Also, remember, everyone has problems on their forefront. There is not a single human being who doesn’t have a problem. 

If you want to solidify an acquired facebook friend to more of a close friend, find something actionable and planned out for the next week or so. If it’s someone you want to learn from, ask them if they have a short while for some coffee next week. If it’s a newly met friend, ask them if they want to join you to go swing dancing. If it’s a cute girl (or guy if you’re a girl), make plans then and there to meet up sometime in the future. People have to feel like meeting you isn’t just another facebook friend in their list or a business card in their rolodex. Even if they can’t make the event, they appreciate your offer to include them in your social life. 

Friendship comes from offering friendship. These friendships do much better to stand the test of time and distance. By offering yourself to them at any time or circumstances, they are more likely to reach out to you despite other barriers. A friendship based on something external, like being on the same soccer team or attending the same class and school, is sound only in the premise of the environment. Once the soccer team dissolves or if you both graduate, you’re more than likely going to grow distant from those contacts. When the premise of the relationship is gone, so will your relationship.

Building Trust

Trust is pretty important when it comes to friendships. Yet it could be hard to build. From my personal experiences, people usually are “generous with [their] friendliness, but stingy with [their] trust” (Dale Carnegie). Building trust is actually pretty easy. Just don’t do anything to lose their trust with you. If you’re friendly and genuine, then people are inclined to trust you. You’re not really trying to build trust as much as you are trying not to lose anyone’s trust. You already know how to build trust, I don’t have to tell you. Be accountable, be honest, and don’t betray anyone. That’s all there is to it. When stakes are high, a track record of consistency and trust will be tremendously helpful.

Showing Gratitude

Showing gratitude is so important. People love to hear that they mattered in your life, that they made a positive impact in your lives. I sure as hell do. That’s how the yearbook industry stays in business. Students pay exorbitant prices for yearbooks every year just so they can run around and fish for thank you notes from their peers. After paying probably upwards of $500 on yearbooks throughout my academic life, I’m sitting here thinking, 1) Why do I have to pay $100 to receive and give thanks to people 2) Why do I have to wait until the end of the year to show my gratitude to my friends and family? 

Why aren’t yearbooks and Thanksgiving runions as effective at building friendships as they should be? Not that they aren’t but there are some flaws. Having artificial reminders and specific time periods to give thanks often makes give gratitude a formality rather than an organic response. If someone shoves a yearbook in your hands, you are more than inclined to write something thankful rather than not. When it’s Thanksgiving, you’re more likely to remember to thank your friends. They would still appreciate your yearbook comment on that time he helped you on your homework assignment, but wouldn’t he have liked that note more when he didn’t expect it and when the gratitude was still relevant?

Show gratitude, and be specific. Saying “Thanks” is a formality that has deteriorated into a knee-jerk response. Saying “Thank you so much for helping me out with that math problem. A similar problem showed up on the test and I knew exactly how to solve it. You really did me a solid.” is much more specific and memorable to the individual. Don’t be a leech, offer help in return! The previous response should be followed by a generous offer like “if you ever need help with your English essay [or whatever you can offer him]. Let me know!”  If you lack skills, offer to buy them their next cup of coffee or lunch. They will be more likely to help you or appreciate your friendship. My old roommate used to bow to me every week or so or give me a hug to thank me for being his roommate. I’m always so flattered, and it gives depth to the relationship past simply being roommates. 

Establish Relevancy

Many people fail to convert a casual encounter into a lasting friendship. Consider when I meet someone at a party. I get along with one of the hosts of the party. I was nice to them, I built trust (however much I could in a night), I was generally happy for them to be around, yet we never really talked to each other afterwards. What happened?

I see this problem as a failure to establish relevancy in a relationship. More likely than not, in most one-time encounters, you’re going to forget why you should see this person again. Part of the reason is that we never really established what future encounters would entail. Is it naturally implied that because we attended a party together, that we should continue to be friends the next day? No, not necessarily.

So it is your responsibility to establish relevancy in a relationship. Why should you ever want to see him again? Why should he ever want to see you again? Make it an essential point to establish a reason to see them again, or at least keep in touch with them. The easiest way for me to establish relevancy is to define a relationship. What is my future relationship with this individual? Is it a mentor-mentee relationship? Is it a potential romantic relationship? Soccer buddies? Business partners? Partners in crime? Although most close friends tend not to fall so neatly into individual categories, it’s a quick and dirty way to get the ball rolling on friendships. I generally suggest future interactions based on this pre-defined relationship.

Here are some examples that illustrate establishing relevancy in a given context



– “Hey, mind if I ask you questions about buying clothes if I have any?”

– “Hey, if you ever need help with website-design. Let me know, okay?”

Potential Romantic Relationship:

– “I would like to get to know you better. Let’s get coffee sometime.”

– “I like ____ too! Let’s go _____ together!”

Business Partners:

– “Hey do you want to meet up a separate time to talk about this awesome idea I have?”

– “I might need your help with this one part of my project.”

– “Let’s talk next week and sort out where our interests may align.”

Common Interests

– “Let’s play league of legends!”

– “Let’s play frisbee!”

– “Let’s study together!”


Really you can say anything (within reason) that offers a future engagement. At the very least, it associates you with something memorable for the other person. If you say you’re good with Excel, your new friend will remember you next time he’s making a spreadsheet. If you like Lana Del Rey or Snoop Dog, you’re more likely to come to mind when your friend purchases Outside Land tickets. Engage to meet up with them sometime in the next week or so. That will be the optimal time between the first and second encounter. 

There are other tips for building a strong foundation for a friendship as well, which I will cover some time in the future. Frankly, there are tons of books and resources on how to make friends. Offering generosity, building trust, showing gratitude, and establishing relevance are probably your four best tools for making strong friends. If you master those four qualities of a good friend, you’re already 90% of the way there.

Part 2: Planning Social Interactions

I’m a big advocate of staying in touch with friends more methodologically rather than free form. The key is that you have stay organized but flexible. I’ve made many mistakes in which my friends relied on me to reach out to them, to which I disappointed them so dearly that I’ve managed to lose contact with many of them. One example is when you bump into your friend on the street. You guys exchange greetings, and before you guys part, one of you says, “Hey let’s hang out some time!” “Of course!” Is usually the typical response. After your interaction, nothing happens. Here’s a table of what will happen based on your choice of action.



Remember, Waiting

Remember, Followup





Remember, Waiting




Remember, Followup





So you’re on the column side and you have three choices: Forget, Remember and wait, or Remember and Followup. Your friend, symmetrically, has three options as well. The results are the cross reference cell of the two chosen actions.

Commentary on each cell:

(1): You both forget to follow up with each other. No biggie. No one’s feelings is hurt. But is that actually true? Once you remember in the future (perhaps when you do want to hangout or want something from them), you’ll remember the moment when you guys said you would catch up, but never followed through. Now you don’t know whether you’re in square (1) or (2) because you don’t know whether your friend was waiting for you to follow up or not. They could’ve forgotten you too, which signals to you they don’t want to hang out with you. They could have been waiting for your initiative to ask them to go your to the party, but felt rejected when you never reached out. It’s never good to forget. Your ass could only be saved if your friend reaches out to you to invite you to his next event.

(2): Your friend is butt hurt because you didn’t call him back or invite him to that event you went to. He feels betrayed because he spent his Friday night flipping through the Facebook photos you posted at that party he wasn’t invited to. Friendship broken. One would think it’s not a big deal, and that your friend is being bitter about it, but it’s really painful to be excluded, so much so that psychologists have found similar areas of the brain activated by rejection and physical pain.

(3): Your friend is a saint. He saved your ass by inviting you to play frisbee.

(4)/(5): You’re waiting for your friend to reach out to you. You don’t know whether he forgot or actually doesn’t want to hang out with you. You spent sleepless night wondering whether he’s really your friend or just there exchanging formalities when he bumped into you.

(6): Your friend once again followed through with his promise. You love him more because you were doubting his friendship for a second there but now you know you’ll be true friends forever

(7): You reach out to your friend, who forgot about your promise. If he actually doesn’t want to hang out with you, that’s fine. If he does, then you guys have a date!

(8): You call your friend, who picks up on the first ring because he was expecting you to invite him to your new house party. He feels grateful he wasn’t excluded.

(9): You guys are both bros/gals and deserve medals!

For much of my life, I’ve managed to fall into the 1,2,4,5 cells. I ended up in 1 and 2 because I don’t have very good organization skills. Sometimes 4 and 5 occur because I don’t have anything planned or because I was hoping they would invite me to their parties, without contributing my social life as well.

In short, it was a disaster. Since I have a resting bitch face, often times when people see me and realize I fell through on my promise to hang out with them, they look at my bitch face and think to themselves “James doesn’t want to hang out with me. He’s just yanking my chain.” And there goes a friendship.

Planning a Date

Since most of your friends are so unorganized and commonly forget to catch up and meet up with people, you’re going to be the one reaching out and doing most of the work. Don’t worry, it’s actually not that much.

Let’s start at the point when you and your friend bump into each other, and now you are about to part. The conversation should end like this on your side (if it doesn’t, you initiate it like this):

Lines are numbered for future references 

1 You: “Hey I gotta go soon, but let’s catch up sometime!”

2 Your friend: “Yeah! Definitely!”

3 (Usually the conversation ends there and you guys part, but you’re going to take initiative right now).

4 You: “How does tomorrow for lunch at the dining commons sound for you?”

5 Your friend: “Oh, sorry, I have a midterm on Thursday I really gotta study for.”

6 (Now you feel disappointed and will probably say “Oh, that’s ok, let’s do some other time then.” Instead you will say)

7 You: “Oh that’s understandable. You gotta study when you gotta study. When are you going to be available?

8 Your friend: “Oh. I don’t know yet. I have to hear back from my boss’s work schedule. He won’t get back to me until later this week.”

9 You: “Sounds good! I’ll check back in with you on Friday then!”

10 Your friend: “Sounds great! Bye!”


Here is some commentary on the social interaction. This is probably a worst-case scenario so you know how to handle it properly.

 1: You are initiating interest in your friend. You are reaching out to him to basically want to spend more time with him. He will most likely be flattered at your request.

2: Your friend agrees to this arrangement. Even though he says “Yeah! Definitely!” all excited, he’s probably too lazy to try to set anything up himself. You know how people are.

3: Here’s a potential breaking point where you might lose him. People tend not to do very well with setting up dates. The whole “What should we do? Where should we go? When should we do this?” boyfriend/girlfriend scenario sets up. And most of the time people are too lazy to figure out the details. It’s not the limited choice that usually creates a deadlock, but rather the paralysis of choice. You’re going to break through the static and take leadership.

4: You offer a concrete lunch date. It’s hard to reject a lunch date. Everyone’s gotta eat some time right? It’s better to eat with someone than without. If time’s too pressing, offer a 15 minute coffee break or talk. The idea is a low-commitment, get-to-know-each-other get together. Offering a concrete time and location allows him to set up a date just by saying “yes.” Otherwise, you would have to discuss all available options, and that results in too much stalling for making official plans.

5: Your friend pushes you aside again. Try to collect your nerves and not get angry at him. Unavailability is usually not a sign of malice, as much as rejection hurts for us. Offer him another option.

6: A lot of people lose steam here too. “Let’s put it on the backburner” usually leads to a deadend. Nothing’s going to remind you to get a date going again. He’s obviously too lazy to set anything up, and now you are too. So you have to ask him for his availabilities.

7: Now the ball’s at his court, he’ll give you a list of options, in which case you can pick and choose one and work from there.

8: Your friend throws a curveball. Not knowing?! Yep, that’s most young adults for you. Even most adults have an agenda that only extends to the next meal. He’s probably sensing that you’re either too clingy or trying really hard to reach out to him. He’s probably either creeped out or flattered.

9: Calm his nerves a bit by saying, “that’s ok,” it’s not that big of a deal. Focus on the positives, leave him an option and tell him to keep his head up for open slots reserved for you. Tell him you’ll check back in again when he knows. He doesn’t want to do any of the work.

10: You guys say goodbye.

Now this is the worst case scenario (A simple “no” would’ve been a lot clearer than trying to figure out his intentions). If your friend continually pushes back, he/she might actually be too busy to hang out with you, and that communicates to you that he/she is too busy to have a friendship, and doesn’t want to hang out with you. That’s is the worst of the worst cases.


In each of these steps there is a potential outlet for advancement, and that’s where your Google calendar comes in. 

Now looking at the bright side. If you friend says yes at:

4: Awesome! You have a date. Put this calendar appointment on your Google calendar so you don’t forget to attend.

8: If he gives you a list of times available. It’s also good to check in to see when you are available as well. Plan accordingly and set up something on your calendar.

10: If all else fails, you promised to check back in with him some time in the future. Put this future date on your calendar so it can remind you to check back in with your friend. Look up Google Tasks or Remember The Milk for task lists.

The beauty of this integration is that it takes literally 10 seconds to check in with someone over Facebook. You will know exactly when to check in, and hardly anyone would flake an appointment in the future. You’re not forgetting anyone and you’re not pressuring anyone into going out of their way to hang out with you. 

If you however, miss out your friend in any of those 10 lines, you are lost, and have to do something (usually more taxing) to recuperate to revive your friendship.

Google calendar is your friend. When you have to keep track of multiple people, this tool comes in really handy. 

On Spontaneity

I expect some to react to this framework with distaste, the main argument being that it effectively kills spontaneity and organic development in a relationship and reduces the relationship to something akin to a weekly chore.

I disagree. And I’ll address these points.

“Planning kills spontaneity”

No it doesn’t. Who says you had to choose one or another? You can have both. Planning ahead solves the pain point of not having an organized way of making time for your friends. If you want to hang out with friend A, but have to study for a test right now, it would be more advisable to make plans in the future (or else you might forget later). I’m not trying to make a claim on which system is superior. I just want to point out that the question inherently assumes that they’re mutually exclusive when in reality you can have both. Make spontaneous plans too if that’s more suiting for you. I never told you to stop doing that.

“Planning kills organic development”

What does relationship development mean to you? It is measured in the number of hours spent together? Or the number of stories you share with each other? Or could it not be measured at all? Planning is the precursor to relationship building. Planning facilitates the process of having more face-to-face interactions, nothing more, nothing less. It does not touch much less dictate the contents of the meeting. That is all up to you. The fear of inorganic is well founded, but only on the basis of the interaction. Planning is a minor part of relationship development, and only concerns itself with making face-to-face time happen.

“Planning reduces the relationship to something akin to a weekly chore.”

Like the previous argument, planning does dictate the contents/results of an interaction. If making the effort to meet your friends feels like a chore, maybe it’s time to reevaluate what people you would want to consider as friends worthwhile of your time and effort. 

Once again, I’m not condemning spontaneity. This is a false dichotomy. You can have both planned and spontaneous interactions with your friends. I do too! I cancel plans to play late-night frisbee, I call friends 30 minutes before I’m heading to the beach. I move around my schedule to accommodate an interesting conversation that extended past my allotted time. I plan if I can’t be spontaneous, and I’m spontaneous if the situation seems fit.

Argument for 1-on-1 interaction

I’m a big advocate for the 1-on-1 interaction. Bro-dates or just a normal friend date. It takes out a lot of the complexity with group dynamics and allows your conversations to go past skin deep. Basically 1-to-1 interaction grants you more freedom and allows you to give all your attention to the person across the table. It’s also a lot less of a hassle to plan when you’re only working with two schedules.

If you must go threesome or more

If you must, here’s my suggestion: start with two people. Once you have a time/location set up, then invite other people. That way you know something will happen no matter how many people show up, and you don’t have to keep track of so many people’s schedules because it’s either you can attend, or you can’t. Groups tend to be indecisive, so start small, and expand and make changes necessary. Once again, having to organize everything together is tough, but doable.

Another difficulty you must face when it comes to groups is that you have to be aware of group dynamics. There’s always a 3rd, 4th, 5th, nth wheel out there. You do not want to exclude everyone. You have to make sure everyone feels like they belong there. That means engaging them even though they are quiet or shy.

Groups are less conducive to deeper conversations, so when you’re in a large group, focus more on having fun and building bonds through activities than through conversation. Remember, your attention is divided so it’s hard to cater to everyone’s emotional needs. Narrow the emotional spectrum band and just focus on the positives.

Post Date Procedures

I generally follow up with a quick thank you after the date. I reference a couple of points (or inside jokes) that came up during the date. It continues to establish the relevancy of the relationship. If I have something planned for the future with this friend (like a future concert I would like to attend with him or another event), now is usually the time I start inviting him. Otherwise, I put a task item with his name 2-3 weeks into the future, just to remind me to check in with him. What this prevents is false closure. False closure is the feeling that we ended on good terms. Yes, we ended a hangout on good terms, but often that implies that we don’t need to hang out anymore, or that all that is to say has been said. Not true! Like making new friends, it’s easy to forget to keep in touch with them in the future. Remind your future self to say hi and catch up again!

Handing Out Rejection

Every so often, you reject someone who in turn believes you don’t want to hang out with them. That’s most likely not your case. You probably made prior plans or have a commitment or simply am not interested in doing a particular activity with them. I’ve certainly have trouble rejecting people in fear of them either taking offense or retaliating (not inviting me to events). I try my best to let them down easily. Here are some tips:

  • Thank them for inviting you: Showing gratitude to your friends shows that you value them as a friend and sincerely appreciate their invitation to want to spend more time with you.

  • Be Honest, Be Firm: Trying to lie your way out of hanging out with someone is not only dishonest in building a relationship, it’s also really hard to pull off. Being honest and being firm communicates 2 points to your friend. 1: I value this relationship, which is the reason why I know I can be honest and straightforward with you and 2: I’m rejecting the proposal, I’m not rejecting you as a person. Sometimes it helps to say those exact words.

  • Don’t be Condescending: “Oh that’s so cute, Sally wants to hang out with me.” People get very offended when you become condescending in your rejection. You are not better than the other person. No one is begging on their knees to hang out with you, so don’t act like it’s so.

  • Offer a Substitute: If you rejected the hangout because you aren’t available that day, ask if they want to hang out a different day. If you don’t like the activity, offer a different activity. Asking people to hang out is like a tennis match, when someone asks you to hang out with them, the ball’s on your court now. Reciprocating an offer shows that you want to hang out with them. People rarely want to act like the desperate ones so usually they will stop asking you after a couple of times (usually just once). If you need to remind yourself, use Google tasks.

Of course if you really don’t want to hang out with the person, ignore my advice. There are people you want to spend time with, and people who you don’t. You don’t need to be friends with everyone.

Part 3: Increasing Your Collision Rate

So you want to find excuses to reach out to people and catch up huh? No one wants someone who reaches out to them out of the blue. It triggers a “salesman” vibe. They often will think “What does James want from me? Maybe he wants me to get him a job or do him a favor.” Don’t worry. Here are some timeless excuses for reaching out to someone after a quiet period.

Liking Their Facebook Posts

You know there is that period in your life when you cared about how many likes you got for your super witty status about how boring your homework is. Well, most people have not grown out of it yet (even me). People will constantly check their notifications to see who has liked their statuses/photos/links/younameit.

Staying on the forefronts of their mind is as simple as clicking a button, the like button. If you want to reach out to them (and trust me, you want to, the benefits are ten folds), send them a Facebook message and ask them if they want to catch up. It comes out so organically they won’t even realized you stalked their profile.

I often take advantage of the reverse situation too. If someone likes my post/photos/links, I can usually use that as an excuse to make plans with them. A like on your status indicates that your presence is felt by the person who liked your content, which introduces a small dose of relevancy that you can use to initiate conversation.

Offering Help

Gerald once told me that he once got free conference tickets for a conference he couldn’t attend, so he spent 10 minutes emailing his friends asking him if they would like to go. Almost no work, but people really appreciated his offer to help.

Although you may not always be given free goods to give away, you can always look for ways to help out your friends. If your friend complain about his homework, ask if he needs help. If you and your friend are meeting up somewhere, offer him or her a ride there and back. A favor as simple as offering to help him clean his room (thanks Patrick!) or “can I get you a cup of water?” shows that you care. 

When you identify ways to help other people without asking for anything in return, people can appreciate your presence and your commitment to keep a relationship healthy. It’s very little effort on your behalf but to them it could make or break them. I got a job offer for an internship over the summer from Google because my friend reached out to me to offer me a referral to their program. He spent 5 minutes writing an email that fundamentally changed my life forever. I had a similar process with Pinterest too. A 2 minute email my friend wrote got me the summer internship I could only dream of. I, too, offer job referrals and opportunities to my friends whom I think would benefit from it. People really appreciate anything you can give them.

Mandatory Nice Guy Note: Listen, you are offering help and giving help because you are a kind and generous person and you value the relationship with the person, not the value the person brings to the table. You can tell a lot about a person by the way he treats the people who don’t have anything material to offer in their lives. If a hiring manager sees a prospective employee compliment his shoes, but treats his secretary like crap, then he knows the person’s only consequentially nice to him to get that job. Similarly, if you treat relationships differently based on how much value a person brings you, most people can easily spot that type of Machiavellian behavior. 

There is a fine line between being kind and being nice. Being nice is a formality, a social ritual, if you will, to obtain an end goal or state. Being kind is a conscious effort to promote your friends and build a relationship.

Asking for Help

Ask for help if you need it. That’s what friends are for right? Being raised in an Asian family for most of my life, I was taught to believe that you should never ask for help from anyone. “We don’t want to owe them anything.” My mother would say, out of goodwill and cultural norms.

But as I grew up I have come to learn that it isn’t necessarily true. Many of your friends genuinely want to help you, it’s a burden that they are willing take on. Just like the previous section, your friends want to offer help to show that they care about you, and when you reject their offer or don’t seek their help, it could actually come off as hostile.

Asking for help demonstrates your vulnerability. It shows that you are human and need other people to make you happy. It offers an opportunity for your friends to show that they matter in your life, by helping you. Playing the image of being “perfect” and “independent” has lost its meaning in a friendship. No one wants a “perfect” friend who doesn’t need anyone. Perfect is an unachievable status that only stinks of inauthenticity and fakeness. The new perfect is perfectly human, and asking for help is one way of showing that you value your friendships.

If people see that you don’t want to owe them anything, then they see it as you seeing the relationship as a transactional relationship. “James doesn’t want him to owe me anything. He think I’m going to ask for something in return.” This breeds distrust, which is not good. It also says “James doesn’t want anything to do with me.” Which is also not ideal. 

Ask for help often! But under 3 conditions. First, you have to show gratitude upon being helped. Your friend is trying to communicate that he cares about you as a friend to do this favor for you, and you should acknowledge his attempt to win your gratitude. If you are truly thankful for him, say it! My friend Anthony calls me about the computer science difficulties he has almost every week, and often I spend a good amount of time helping him through his problem sets. Why do I do it? Because Anthony sincerely shows his gratitude for my help. He says thank you and “that was a lot of help” and texts me heart emoticons. After all these gestures, I couldn’t help but feel appreciated that he looks up to me for computer science help. He asks me because he knows I am willing to help him because I am his friend, and he acknowledges my generosity like no other.

The second condition is to either not ask for favors too often or too big. Asking for too many favors would make your friend think you’re taking advantage of them, so don’t do it so often that it would annoy your friend. Don’t ask for favors too big (or try not to). It’s not that it would ruin a relationship, but it would definitely put strain on it. 

The third condition is to reciprocate. If you’ve been violating the second condition too much, even the debts a bit by giving help back, or offering help back. If you have good friends, they will ask you anyways when they need help. If they are polite, then you should be the one initiating the offer to help. A gratitude followed by an offer to help is usually the best way to go about reciprocating. “Thanks for babysitting my cat. Let me know if you ever need me to babysit your dog. I’d be happy to do it.” That’s good because you’re communicating that you understand that he went out of his way to accommodate you, and you in return, maybe not immediately, are willing to go out of your way to accommodate him as well. Often times I let my friends pay for my meal, because then I get to say, “Thanks for paying for my meal. The next meal’s on me!” Now I’m not rejecting their friendliness, and on top of that, I’ve secured another time to hang out with my friend.

Asking Them For Advice

Being asked for advice is one of the biggest ego boost you can get, and you often can ask for advice from practically anyone. Anecdotally, everyone has something to say about dating, so asking for dating advice always leads to interesting conversations. If not, ask for professional advice. I’ve played the “fanboy of ___” card way too many times on high-profiled entrepreneurs that I’ve gotten free meals and time with them. They always have fewer people reach out to them than you would expect. Like I’ve said before, many people just want someone to listen to. 

Follow the “Asking for Help” conditions as necessary.

“…Reminded me of You”

If something or someone reminded you of another person, it’s probably a good idea to send a quick text or Facebook message informing them rather than letting it slide. It shows that the other person’s still on your forefront and you still think about them. Since it comes organically, it genuinely means they were on the forefront of your mind. 

If you’re reaching out without a reason. Make something up. “I just saw your twin” is nice and easy (although it may prompt the response “pics or it didn’t happen”). “I had a dream about you last night” is more visceral, and even flirty if you want to turn it that way.

Going to High Collision Places

I tend to like to study where I am most likely going to see my friends. I usually end up in my local coffee shop, my dorm lounge, or even my university plaza. If I see a friend. Bam! “Hey how’s it going? Let’s catch up! When are you free?” And there you go, a lunch or dinner date.

Going to high collision places doesn’t just entail studying. Anywhere where you will most likely meet people, go there. Find people, say hi, and make appointments. 

“My Calendar Told Me To Say Hi to You”

Do you know you can practically say anything to hang out with your friends? Yep, in all brutal honesty, I say this sometimes. No one has ever called me out for being inauthentic or mechanical in my methods. They’re usually just happy I thought of them and want to spend time with them.

Inviting Yourself to Events

I always shied away from inviting myself to events. I always assumed that if someone didn’t invite me, it was because they didn’t want me there. I’ve come to understand that that is not always the case. Sometimes people forget and want you there. I myself even forget, even with a methodical system of keeping track of my friends. Other times people are afraid of rejection, and don’t ask you. 

The key though is being able to differentiate between someone who is forgetful versus someone who just doesn’t want you there. Sometimes it is hard to tell. If the person gives me the right cues though, I would see if I could invite myself. It’s an extension that could fail miserably though. 

I have a friend who was going to go backpacking with his group of friends without me, and I felt a bit excluded and hurt because I thought that he didn’t want me there. But after some conversation, it turned out that my friend didn’t realize I was the kind of person who would be down to go backpacking. It was only when I nudged myself into the event that he realized that I would be interested in going.

Some Softwares for Staying in Touch with Friends

Some people prefer taking the software route. I’ve tried some of these. Some I still use, other I get out of touch. I think a simple Google calendar and Facebook messaging is good enough for me. But for those who want to embrace the bleeding edge of technology:

Mingly: Contact management system that notifies you when it’s your friends birthday or if your friends change jobs (and things related to the whole “It’s your friend’s special day”). It allows you to easily set up reminders to touch base with people. The initial set up time was too much for me so I abandoned it. Also, they lock up a lot of premium features for a price.

Boomerang for Gmail: It’s a pretty good software for sending emails at a certain time. You can set a reminder in case your contact doesn’t respond for a certain amount of time.

Newsle: Tells you whenever your friends end up on the news. It’s pretty neat but usually there are about 5 people in your social circle who dominate the news. Usually it ends up being college athletics or some startup your friend founded or something. Still pretty neat when you can congratulate them or if you actually spot them on the news before they do.

Refresh: More for networking. It brings all the information you can find about the person from the web to your Gmail inbox. So you can refer to that witty status your friend posted when you email him. It brings context to conversations, and with context comes relevancy. This is more for networking as well. 

Bonus: Advice for Incoming Freshmen

I’m including this section because I always like giving “Things I Wish I Knew When I Was ___” types of advice. Also since it’s the beginning of the school year, and freshmen are quite conducive to making a large amount of friends in their first couple of weeks, and subsequently, hemorrhaging 80% of them throughout the school year. In bullet point fashion:

  • First off, it’s pretty natural to lose around 40-70% of your friends during your freshman year. If you’re not losing that many friends in college, you’re certainly not making enough of them. The difference between my mistake and this was that I didn’t consciously get to choose who I got to keep, and friendships were therefore subjugated to logistics, like being in the same class or living in the same dorm.

  • The key to college students’ heart (especially upperclassmen) is through dorm food. No college student can not deny free food. Want to meet the president of a club? Offer a meal at a dining common. 90% of the time they will accept, and you’ll get great 1-on-1 time with them.

  • No more cliques. Make friends with individuals, not with collective groups. Groups form from individuals, not the other way around. Here’s an example to illustrate my point: You’re not really friends with everyone in Dodgeball Club just because you joined Dodgeball Club and attend meetings. Group membership is correlative to making friends, but make sure to extend that extra effort to know each individual.

  • Take notes on people when you get their contact information. For example, “James Maa: Talks a lot about computer science. Has a pet rabbit.” It’ll help you remember them better. Put it on your calendar to touch base in a week. Check out Mingly or Refresh if you want the technological infrastructure for this.

  • Introduce friends to friends. Form connections. Be the guy who knows everyone. When you connect everyone, people will connect you too.

  • Everyone says to avoid people who table or flyer, but sometimes it’s pretty nice to say hi to them and talk to them, even if they’re trying to sell you something. You become Mother Teresa relative to all the other people too busy to chat.

  • Stay out of your dorm room for as long as possible. It’s much harder to meet people when you’re indoors. Attend as many events as possible.

  • Misery loves company, so organize lots of study parties, and attend a lot of them too.

  • Please, please make an effort to remember people’s names. Practice often, and be shameless to admit when you forget.

  • Screw jaded upperclassmen. They’re not worth your time.

  • Rejection: It’s painful, but not that painful, so do it.

  • Be a freshmen: I’m a junior now so I don’t get to act super friendly and annoying without cause. You guys are supposed to be overtly friendly and try to make friends with everyone, so act like it to your advantage.

Conclusion: Make Time for Your Friends!

Once again, my past self has led me into the trap that there is little to no balance in life. Social-Sleep-School, choose two.

I used to try to keep myself busy when people didn’t invite me to events. It was more of an immature lashing out through resentment rather than a rational choice to spend Friday nights alone. I would promise myself that while people were out having fun, I would get ahead in life and show them who’s wrong to exclude me. But because it was acted out of resentment and disappointment, I usually wouldn’t get anything done. I would often end up watching TV or surfing the internet because I couldn’t work with all the emotions bottled inside of me.

Looking back, I missed out on a lot of friendships and opportunities because people either assumed I was busy or they thought I didn’t want to hang out with them (they most likely perceived my passive aggressive behavior) and therefore didn’t invited me to their events. Me, being butthurt, would further isolate myself from their social lives.

This vicious cycle was not healthy, and I’m afraid too many people are falling into this trap of holding such a pessimistic view on relationships. It’s natural for people to forget, don’t mistake ignorance for malice.

Then at one point I thought I really was busy. It was no longer resentment that lead me to narrow my social circle, but rather my prioritization of my personal success over my social life. I thought I could work hard now, and earn my friends later. But it doesn’t work that way. Many of my friends didn’t appreciate that I prioritized my own success over our relationship, and many backed down out of an non-reciprocal relationship in which all I wanted the companionship and support of the friend without offering anything in return. People were right to leave me, I was a poisonous person at one point.

I’m making a change, and so should you. Make time for your friends! You have to eat, don’t you? Well, so do they! Eat lunch with your friends! Exercise with your friends, do homework with your friends. Set something up, be in each others’ presences. It doesn’t take a lot of time or energy to maintain a relationship, and speaking from a strictly selfish perspective, there is so much to gain from your friendships! You will learn so much from your peers, you will gain so many contacts, and in general your life will be so much happier and exciting when you can actually have shared experiences!

Right now is not the time to put aside friendships for your own success, because success cannot be achieved without friends helping you along the way. Think about this interesting fact about the college and high school environment: Right now will probably be the only time where the environment is setup for you to make and keep friends. You are all placed in a geographically close area, forced to interact with each other, and share a common interest and age group. It will be hard to find such an environment so conducive to friendship at any other time or place in your life. Cherish your opportunities! Cherish your friends! Cherish your friends!

The Best of Luck to All of You!

A Beginner’s Guide to Computer Science


  1. Intro
    1. Objectives
    2. Your Learning Curve
  2. Strategies
    1. The Most Important Strategy: Get Started
    2. Be Part of a Community
      1. The Mentor
      2. The Peer
      3. The Mentee
    3. How to Find Answers
      1. Using Your Problem Solving Toolkit
      2. Googling
      3. Ask a Peer
      4. Ask a Mentor
    4. Debugging
    5. Deliberate Practice and Application
  3. Tactics
    1. The Best Tool: Get Your Hands Dirty
    2. Simplification
      1. Simplification of the Problem
      2. Simplification of the Examples
    3. Casework
    4. Other Tactics
  4. Tools
    1. Visceralization
    2. Metaphor
    3. Exploration
    4. A Coherent Meta-Example
  5. The Roadmap
    1. Semester 1 – Practical Programming
    2. Semester 2 – Data Structures & Discrete Mathematics
    3. Onwards
  6. Conclusion
  7. References/Resources


Learning computer science is one of the most enjoyable experiences in human life, also one of the most frustrating. You came across this page because either you want to learn about computer science, want to learn computer science, or want a computer science job. Whatever your motivation, computer science may seem like witchery to you. Geeks use overly complicated jargon to explain concepts to you. A friend of mine, Michelle Bu (who has an amazing anecdote about being a novice programmer by the way), noted that “programmers have a perpetual competition to see who can claim the most things as ‘simple.’”

You want to join the club, but you don’t know how to get there. Joining the world is like trying to take down a castle with a butter knife. I remember my first lessons in computer science. I tried to learn how to program by googling “How to Program.” In hindsight, it was futile as each search result was either too encompassing and vague, or too technical and detailed. I went to ask my computer science friend. It went something like this:

Me: “I want to learn how to program. Can you teach me how to program?”

Friend: “Sure. Let’s start with variables. A variable stores a value. There are different types of variables. A int variable stores an integer, a long variable stores a larger integer, a boolean….”

Me: “Hold up. What? Back up. What’s the difference between an int and a long?”

Friend: “One stores a 32-bit integer and one stores a 64 bit one.”

Me: “What does ‘store’ mean?”

Friend: “It puts the value in a memory location.”

Me: “What’s a memory location?”

Friend: “The memory location is where the information is stored.”

Me: “That doesn’t help, where the memory location? And how does it decide where to store it?”

Friend: “Well, when the compiler of the program runs, it creates a memory address in the memory. When you have a variable name that references a values. The compiler will look into that memory address.”

Me: “Huh? What’s a compiler?”

Friend: “Don’t worry about it. Just remember that a int stores a 32 bit integer and a long stores a 64 bit integer.”

That was unhelpful. Asking a simple question like “What’s the difference between ints and longs” unravels 3 others questions about computer science. It’s like trying to behead a hydra. Chop one head off, and it’ll come back with 3 heads. Before you know it, your instructor’s trying to stitch the heads back on just so you would shut up.

I don’t want anyone to be scared off by an experience like this. Some aren’t so fortunate to have the support I’ve had when I was learning computer science and have long shied away from it. Computer science is fun. In my opinion, it’s one of the truest expression of self. It has the best ability to innovate and create. It’s like playing God. Sure, you’ll mess up a bunch of times (it’s part of the excitement), but whatever you create, you’ll own.

This guide is lengthy, but you can really just break it down into several manageable parts to read it, or come back to it often when you feel lost or get stuck. It’s meant to be comprehensible, and it’s my intention to bestow as much knowledge as I can on you.

Note to “expert” programmers:  A lot of the things I say are crude and may not be 100% accurate, but for the simplicity of understanding concepts and computer science terms, I chose to appeal to the laymen. If vocabulary could be taught by reading the dictionary, we wouldn’t need elementary school. Likewise, it wouldn’t help a beginner much to hand him a manual and say “Read this.” Thank you for your infinite patience. Message me if anything bothers you.


To learn computer science, you must break down the process of learning into three hierarchical forms of learning from the abstraction to the fine tuning. Many guides (if any) only focus on one of these aspect without giving an overarching understanding or fine tune implementation. Your learning, learning objectives, are broken down into general strategies, helpful tactics, and tool acquisition.


Strategies are overarching principles in studying computer science. In this section I’ll be covering the necessary infrastructure for learning. These concepts cover topics like how to seek help, how to ask questions, how to set up an environment for learning, and how to debug.


Tactics are strategies for tackling computer science problems. Problems are different from exercises in the sense that you don’t know how to go about solving a problem. An exercise would be something like 82 to the power of 32. Even though it’s a difficult exercise, you would know exactly how to solve it.

A problem, on the other hand, have an ambiguous presentation. You may see a problem and not know how to solve it. It creates mystery and a sense of helplessness in many, but it also creates wonder and excitement in those who like challenges. Of course, everyone has different boundaries of what they define as a problem or exercise. Some may consider a question a problem whereas others would consider it an exercise.

Learning tactics is building an arsenal of tools for tackling new problems. Computer science is filled with fun and challenging problems to take on. In this section I will teach you some of my favorite methods to tackle new challenges.


Tools are the kinds of things most people think about when they think about computer science. “Knowing Ruby” and understanding “How to design greedy algorithms” are things we consider to be tools. Tools help you do things in computer science. You will learn tools in your journey in computer science.

Learning tools and tackling problems use slightly different approaches when it comes to learning, but they both share a lot in common in terms of learning. Tools entail syntax of languages, data structures, and anything that is a concrete understanding of something. Often, once you’ve solved a problem, you’ve acquired a tool to solve similar problems. Maybe it’s a hash table or recursion (don’t worry if you don’t understand these terms right now) you learned about in your studies. Tools are the least important concept of all three because no matter how many tools you acquire, if you don’t know strategy or tactics, then you won’t know how to improvise, and will forever stay a novice.

As you may see, strategies are the most important topic in learning computer science, followed by tactics, followed by tools. In fact, I will put very little emphasis on tools. I will point out which tools to acquire and how to acquire them, but I won’t go too much into the material itself.

Your Learning Curve

Everyone will have their moment of self doubt in their journey towards learning computer science. It’s okay! It’s completely natural to feel this way at times. To help you counter your journey, we must understand the journey before us. Here is a map:

There are three stages of understanding that is used to model our learning paths. At the beginning, everyone is what we call an apprentice. The main role of  the apprentice is to mimic. They copy the masters and do as the masters do, sometimes without much questioning. During this stage of learning, as most beginners do, you will learn by following exercises and doing what the teacher tells you (“teacher” is a flexible entity that could be a book, a tutorial, or an actual teacher). If the teachers throw all the material at you and said “learn this,” you’ll flounder and sink like a rock. You’ll be overwhelmed by the material and discouraged by the monumental challenge. So instead, you are to learn through structure. However, after a bit of time, you’ll feel comfortable in the material, well, sort of. You’ll feel comfortable in this tiny realm of mimicry.

Apprentices learn at a fairly quick rate until they hit the first peak. Afterwards, they graduate to be an artisan. Instead of following “best practices,” artisans have to learn to improvise. All of the sudden, there is no template to copy off of anymore. Sometimes, there isn’t even a “correct” solution. The training wheels that were once a safety net are now gone and it creates a sense of frustration and loss. Good programmers get themselves out of these trenches. They struggle tremendously through late night obsession, lack of sleep, minor depression, and rigor. The push past their ceiling until they are out of the trenches.

Then they plateau. They either become comfortable or they continue to hone their skill, sometimes believe they are not getting anywhere. In some considerable time, they become a master.

Like the learning path, this guide is broken into those three stages. Tools are the main approach used in the apprentice phase, tactics then take over the dominant role of learning in the artisan phase. Strategies, although cannot guarantees mastery, are essential parts to helping you reach there. This path is fractal in nature as well, as it describes not only the general learning path, but also the learning path to learning each new C.S. concept as well.

Understand where you are in the journey can ease some anxiety and nervousness about your initial failures. If you ever feel down about your journey. Don’t give up, just remember that frustration is currency of progress and dedication in price you pay to be a successful student.


Let’s talk strategies. Many people are afraid of learning how to program because they don’t know how to go about learning computer science strategically. They don’t know where to start, where to go, what language to pick, or what they don’t know (not knowing what they don’t know). Knowing how to tackle new learning endeavors strategically means a more directed effort towards your learning goal.

The Most Important Strategy: Get Started

I think if you could only take away one lesson from this guide about learning, it would be to get started as early as possible. It doesn’t matter if you learn in a less inefficient manner or don’t know where you’re going. As long as you know whatever it is you’re doing is heading in the right direction, it is the best option to go about it.

If you still have a lot of unanswered question about computer science like “what programming language should I start learning?” or “What tutorials are the best for learning X?”, you should push aside those questions for now and just get started. Many of the answers you will find along the way. People tend to fall into analysis paralysis. They read up about computer science, purchase programming books, and read guides (like this one) to formulate a lifelong plans about how to study computer science but they never write a single line of code.

If you ever find yourself in a state of analysis paralysis, find an actionable step to take in the direction of your goal and take it. I’ll even do it for you if you can’t make a decision, just follow The Roadmap on the bottom. It won’t be the best, but it will get you to your destination. Your first priority, like every beginner’s first priority, is to take the first step.

So jump! Come join the world of computer science and have fun being lost. Author Tim Cahill of the book “Jaguars Ripped My Flesh” once quoted, “The explorer is the person who is lost.”

Be Part of a Community

I’m a big fan of online learning. I take online courses on Coursera, Udacity, and Edx all the time. As much as I would love to urge everyone to sign up for these classes and do away with people, being a part of a community is important to grasping and understanding computer science. Not only is collaboration important for learning computer science, it is crucial for when you work in the industry, as everyone in the computer science industry collaborates with one another.

I think it’s important to have at least one figure in each of the following roles to have a complete and satisfying learning journey. Forming a community is beyond just once-a-lifetime encounters. It is regularly seeing, meeting, and interacting with these people. Having a strong community (not necessarily large) will make your learning journey much easier, directed, and frankly, fun.

The Mentor

Have a mentor. You want someone who is better at computer science than you to explain and answer any questions you may have. Having this person on call is extremely important because there will be times in which trying to find answers online and through books will not be fruitful. You will be frustrated and you will be angry, and then you will feel helpless and self-loathing. You need someone’s help. You need someone who can listen to your problems and answer your questions, someone who’s been in your shoes before and understands the hardships you’ve been through. Not only can they answer technical questions, they can also answer broader questions like “I want to build a robot that can drive itself, what should I study?” or “I’m not quite sure what I should learn next.” Their experience is not to provide a curriculum, but rather to provide directions and insight.

Really do try to find a patient and understanding teacher. It’s better to find someone who has a poorer mastery of a subject who can explain his understanding clearly than it is to find someone who is a computer genius who would just scoff at your dumb questions. This is crucial. I’ve seen many ambitious computer science beginners give up their pursuit of computer science because they met someone who not only does not answer their questions, they demean their mentees for asking such dumb questions as to extinguish their flames of curiosity. Find someone who brings out the best in you and whom you can really trust for their wisdom.

Also it is preferably to find someone who you know in person and can meet up in person. Best case scenario is that your mentor’s already your friend. Worst case is that you lack friends who know computer science. If you know an acquaintance (or even a stranger), ask them for help, they will be flattered. If you’re in school, look for the teacher assistants of the class. If you’re still fruitless, check to see if there are any local programming groups at your local university or MeetUp.com. If all is hopeless, check out StackOverflow and other forums for learning computer science. Often, you’ll find a wide and supporting community (although never paramount to person-to-person meetings). If you are a UC Berkeley student and don’t have a mentor, message me.

The Peer

Another important person in your learning community is finding someone who is around your level of expertise. I find that the process of discussing computer science concepts with another human being to be extremely rewarding both in terms of building a meaningful relationship and learning computer science. Your peer will teach you, encourage you, and help you more effectively than you can yourself. I know many travelers who give up learning because they become too uncomfortable being lost in the world of computer science. Having a fellow nomad with you will make your journey speedier and more pleasant.

A peer will help you tackle problems. Although it may seem like you’re slacking to divvy up the work, the learning from such interactions will increase exponentially. Interacting with your peers will help you discuss different perspectives and problem solving tactics to a particular problem. In many academic subjects, especially computer science, there will be different approaches to tackling a problem. By exposing yourself to different approaches and methods of understanding a concept or solving an exercise, you understand the material at hand more thoroughly.

Vocalization of your own thoughts will also help you solve problems, even if both of you are lost. In computer science, it’s often called “The Rubber Ducky Debugging Tool,” which is a debugging methodology where you explain your bug or problem to a rubber duck, thereby understanding the problem a bit better. Why use a rubber duck when humans, understanding and responsive humans, are so much better?

Beyond the realm of problem sets, peers will also bring the culture of  the classroom into your everyday life, which is more important than one would think. Often, I remark a humorous computer science joke during normal conversations, only to have it help me understand concepts a lot better.

If you are of the competitive nature (like I am), then you will understand how having a peer will keep you on track to progressing your own individual goals. They will challenge you to perform your best, they will encourage you if you fall behind (you are their peer as well), and they will make damn sure that you are a worthy competitor so that you can challenge them as well.

Find a learning peer who you work well with. Being friends is important, but don’t let it become distracting when you guys have to study or work together. Find someone who is as driven to learn computer science as you are, but who is still patient with you when they are ahead (like helping you with your problem set even if they finish before you). Availability is very crucial for learning buddies, as you are expected to meet regularly with your peers.

The Mentee

Although not strictly necessary, if you really want to solidify your understanding of concepts (generally closing the 10-15% gap of understanding), find someone who is worse at computer science than you. By being able to explain your ideas clearly and simply, you truly demonstrate, to the world and to yourself, that you understand the concept. You also give back to the community that has helped you in your journey.

Having a community that consist of people who fulfill these roles is important and is often the first failure point for beginners. Without the right type of support, students will struggle through unnecessary hardships.

How to Find Answers

The chain of command I follow when it comes to answering questions goes in the following:

  1. Use your problem solving toolkit
  2. Google It
  3. Ask a Peer
  4. Ask a Mentor

Using Your Problem Solving Toolkit

Before I look for any help anywhere, I tend to try to exhaust my problem solving toolkit and tools. I look at each of my tools and tactics (which I will teach some to you in Tactics) and see if the tool or tactic will solve it. I explore a path through a tactic, evaluate my current standing, and try a different path. I don’t move on to the next chain of command until I’ve exhausted all possibilities and all my tools. Finding answers without trying to answer the question yourself will rob you of your insight. You’ll have trouble remembering the context of the problem, the nature of which the problem is constructed, what you do or don’t understand, and naturally, you’ll lack a complete understanding of the solution.


After I come fruitless with trying to solve the problem myself, I leverage the help of the internet. I google it. StackOverflow is the best website for answering programming questions. I try to come clean to the right terminology and read through several search results to try to find what I’m looking for. I can’t give you much advice. Many people know how to Google, and the expertise comes with practice, or deliberate practice.

Ask a Peer

Now if you’re lost, usually because you don’t know the right terminology or have an obscure question, find a peer to pool together your insights. If you’re afraid of bothering people (like I still am), just remember that your peer will benefit from solving this problem just as much as you will, so asking questions is a win-win situation (consider this as well when people ask you for help). Working on a problem with a peer will create a sounding board for your insights. It will cumulative collective knowledge and the power of collaboration. It will help tremendously.

I always ask for help by presenting the problem as accurately and as easy as possible, state what exactly is getting me stuck, and the approaches I’ve taken so far in tackling the issue. It will facilitate open communication and common understanding in the problem.

Ask them to voice their thoughts out loud. Their interpretation of the problem, their initial reactions and thoughts on it. Then ask them how they plan on extracting more information from the problem, if not solve it. Take their thoughts, which will be a jumbled mess if they are just as confused as you, and rephrase it back to them so both you and them understand what’s going on. Point out the obstacle, and discuss how to get around it.

Ask a Mentor

If you’re still lost at this point, it’s time to go ask a mentor. To maintain a good relationship with your mentor, regularly meet up with them, even if you don’t have specific questions. Mentors, all and all, should still be your friend who you can talk to. It is also equally important to not be too big of a burden to your mentor. Everyone’s patience is finite, and if you rely on your mentor to carry you all the way, you will soon find yourself mentor-less.

Ask questions, but ask questions with context. There are no dumb questions, but there are prepared questions and unprepared questions. An example of a prepared question (although may be dumb) is “How do variables in Python work? I’m trying to understand how lists are stored in memory. I tried Googling it and read some articles about loosely-interpreted languages, but I still don’t quite understand what that means.” Asking questions with context demonstrates several points to your mentor:

  1. I have a specific question with particular purpose.
  2. I have tried to seek out a solution through other means without trying to bother you.
  3. Here’s what I understand so far, let me know what I’m missing

Asking good questions will help sustain a good relationship with your mentor. Make sure to thank your mentor every time he helps you.


Before I take on any new learning endeavor, my first strategy is always try to find some cheap way to do experiments. Richard Feynman, Nobel Prize winner for Physics, always advocated for the opportunity to “play,” or experiment with the things you are learning. In computer science, it means writing code and subsequently debugging. Having debugging tools allows us to better peer into the program and see what’s going on. If you don’t know how to debug code, or don’t know the tools in order to do so, you’re robbing yourself of a great tool and teacher.

If you’re wondering what “debugging tools” means, you’re asking the right questions. In any programming language I learn or class I take, I seek to answer 3 questions right off the bat:

  1. How easy is it to write and run code? Where do I do it and how? Let’s say you’re taking an algorithms class, but instead of writing the code for the algorithms, you just learned the theory. No way of testing whether it works out or not. How confident would you be to write the same algorithms you learned in class at your internship? Therefore, learning anything,  the first question should be “how can I verify what I’m being taught is true?” In chemistry, you have labs with test tubes, in mathematics, you have proofs. In computer science, you have a computer and code. Setting up your computer to write and run code is like setting up a chemistry lab to run experiments. You’ll need the right equipment, the right litmus tests, the right ingredients. You’ll perhaps have to download certain software and editors. Whatever you’re learning, try to find a convenient way to be able to write and test code. Get a text editor (I started out with Notepad++ actually, then switched to TextMate when I got a Macbook). Now, you’re going have many different factions of programmers telling you what’s best for you. They’ll tell you that Vim is the best, or to stay true to Emacs. Whatever they say, ignore them for now. Having any functional editor and method is around 80-90% optimality, so please, please, do not let this “best editor” decision prevent you from writing code. That’s probably the stupidest failure point in one’s journey in learning computer science. Pick one that has syntax highlighting and move on. You can always switch later.

  2. How are errors in my code handled? Find out how errors are handled in the code. Different programming languages have different ways of handling errors. Some programming languages are silent about their errors, others tell you exactly where you have fucked up. Sometimes errors are ignored, and other times they break down your whole program, or even crash your computer. Knowing how to know errors are being produced will help you know what’s going on, being that if you don’t know you’ve messed up, you can’t fix your problem and learn from it. Ask your mentor about this if you get stuck, just say “What will my program do if I have a bug? How can I know whether I have a bug or not?”

  3. How can I tell what’s going when I run my code? I generally try to find out how to “print” things from inside the code. Usually, there’s something called the print statement. In Python, it’s print(“Your Message Here”). In Java, it’s System.out.println(“Your Message Here”). In Javascript (which is a completely different language from Java by the way), it is console.log(“Your Message Here”). My first job is learning how to print things out onto my computer, whether if it outputs to my terminal or my browser. Once you know how to print things out, debugging is much easier. You’ll be able to tell what values certain variables are at certain points in the program, what values are put into function, where exactly you are in your code, among other things. Print statements get you about eighty-percent of the way their, and other debugging tools may vary from programming language to programming language. I would generally do a quick Google search to see what other debugging there are or ask my mentor.

Deliberate Practice and Application

Computer science, out of most educational subjects, requires the most deliberate practice and application. It needs both the practice and application to get the most of your computer science education. Deliberate practice includes doing problem sets and homework. It is the process that solidifies your understanding of a particular concept or tool. Application, on the other hand, solidifies your connections to solving problems. In deliberate practice, you have the problem, and you’re seeking the solution. In application, you have the solution, and you’re preparing for the right problem to come up.

Let me demonstrate what this means through an example.

Let’s say you’re trying to learn recursion in your intro to computer science class. Your instructor gives you an assignment, maybe even a project, to help you solidify your understanding of recursion. It involves calculating the factorial of a number, among other problems (recursion is difficult!). You complete the assignment and you hi-five yourself “Yes, I just learned recursion!”

Yes, you have learned recursion. You’ll know enough to pass the test, because you know it’ll be tested. But how do you know whether recursion could help you solve a problem you encounter at your summer internship? You don’t, at least it’s not easily conceivable. If someone gave you this question 6 months later, “How can I count the number of ways to make a dollar with so and so coins?”, would you know recursion is the right way to go? Well, we can’t be sure, and it doesn’t occur to many beginners that the answer is “YES!”.

That’s why I believe that seeking out problems to solve once you learned a concept would strengthen your understanding of the concept as well as put in the right connections and cues that would trigger “Recursion! Recursion! You can solve this through recursion!” in your head.

Well, how would systematically go about applying their understanding? There are several ways. The first is finding personal projects. Find problems you need solving, and ask yourself (as often as possible), “Can I solve this using this concept I just learned?” If so, tackle it. Make it second nature to recognize when a tool is useful. At the club I’m involved in, Hackers@Berkeley, we use the concepts we learn in class, in our workshops, and online, to tackle challenges we always wanted to solve. Hence, we produce some of the best computer science students, ones that join Y-Combinator, ones that become Thiel Fellows, and land fantastic jobs and internships at great companies.

Metacognition is the other. After you complete your problem set, take a minute or two to examine the nature in which the problem was presented. Ask yourself, “Usually in what form are these problems presented in?” Find patterns that occur among problems you’ve encountered in the past. For recursion, you might think “Well, recursion problems are presented as the act of building up complexity from simple rules.” Therefore, when you see a problem that seem “grand” in nature, you’ll know to think about recursion.

Developing this “hunch” is greatly helpful in problem solving and really keeping your computer science education past the shelf-life of the class.

That’s all I really have for strategies. Building a community, being able to find answers, and developing the right habits is really 95% of the things you need to be a great computer scientist. You just have to make a commitment and DO IT.


Tactics are methods of tackling new problems. The difference between great problem solvers and the normal students is that even though both parties are stuck in a new problem, great problem solvers rarely idle and stare at the problem. Usually they are making some form of discovery or testing some form of conjecture. They always have an avenue to discover new concepts behind the problem, new patterns. Always discovering, always progressing. Having good tactics for solving problems will not only help you learn faster, it will also give you an edge in tackling new problems.

The Best Tool: Get Your Hands Dirty

There is an inherent appeal to computer science in that your curiosity can always be fulfilled. Unlike other subjects like biology and chemistry, where you need a lab, or financial accounting, where you need years of experience before management lets you handle any money, in computer science all you need to discover something new is a laptop.

That’s why the mother of all tools is getting your hands dirty. Experimentation will always yield some fruitful result in your understanding of computer science.

I’ll explain the concept of Getting Your Hands Dirty (GYHD) using a famous example used in Paul Zeitz’s book and video course The Art and Craft of Problem Solving:

Q: A census-taker knocks on a door, and asks the woman inside how many children she has and how old they are.

“I have three daughters, their ages are whole numbers, and the product of the ages is 36,” says the mother.

“That’s not enough information,” responds the census-taker.

“I’d tell you the sum of their ages, but you’d still be stumped.”

“I wish you’d tell me something more.”

“Okay, my older daughter Annie likes dogs.”

Of course when you first look at it, you would be stumped too. “What?!” I first thought, “There is no way I could extract any new information from this.” I decided to give up, only to regret that I should have paid more attention or spent more time trying to solve it for myself. I should have gotten my hands dirty.

A: Some of you may have picked up on the hint to get your hands dirty. Well, let’s do so. Let’s list out all the products which have a product of 36. They are listed as such:

Girl 1









Girl 2









Girl 3


















Many of you would still be stumped, but let’s take GYHD a step further and list out the sums, at the very least we know the answer’s one of the 8 choices. You will quickly find that two of the options, (1,6,6) and (2,2,9), have the same sum. Those two are the only two pairs in which ambiguity can exist. If the woman had daughters of any other age, her telling the sum would NOT have stumped the census taker, but those two possibilities will. As a bonus treat to the riddle, to figure out which answer is correct, you have to notice that the mother says “Older daughter Annie.”, which means that there exists an “oldest daughter.” The ages of the daughters must be 2, 2 and 9 then.

We would have never arrived at the answer nor know there was a possible solution from the outset. We would never know until you dug a little deeper, explored a little further, to see what other information the current information can provide.

Brute Force

In computer science, particularly on tests and technical interviews, you are often asked to solve a problem quickly (uses less time) and efficiently (uses less memory). A tip from Cracking the Coding Interview by Gayle Laakmann suggests that before you come up with your best solution, come up with a less than ideal solution. Why? Because often questions are difficult enough such that you cannot see the best answer right away. Having a stepping stone, a less ideal solution, is crucial to reaching your final destination. Many questions have a series of stepping stones. Usually the most easiest to conceive is called “Brute Force.” Let’s do an example to demonstrate thought processes that can go into solving a question. I modified the problem to make it understandable for CS beginners.

Q: If you are given 100 tiles numbered from 1 to 100, shuffled in a bag, with 1 duplicate number in the bag that’s between 1 and 100 (giving you 101 numbers), how do you find the duplicate number efficiently?

For the sake of people to understand what time complexity and space complexity is, I’ll simplify the objectives of the question to be.

Time Complexity: How many mathematical operations must you do.

Space Complexity: How many tiles will be remembered at any give point? Let’s say you remember a tile if you lay it out on the table.

A1: Well, let’s try a brute-force styled answer. Well, by definition, duplicate means “already occurring”. Let’s take the letters out one by one, and for each one we take out, we compare it to the tiles that are laid out on the table, and then lay it out on the table. If we find the duplicate, we stop.

A1 Analysis: Although this solves the problem correctly (it will always give us the correct answer), the task of finding the duplicate is very inefficient. Every tile we take out, we have to do 1 more comparisons than the last one. If the duplicate is the last time, we would have done 4951 comparisons, taking up 100 spaces. Let’s try to do better. For any bag of  number tiles from 1 to N, with a duplicate, you will be making N(N+1)/2 comparisons and N spaces.

A2: You notice that since each number only occurs once except for the duplicate, there must be one space for each number tile. So you draw a 10 by 10 square grid on your table, and for each tile you take out, you place exactly where the tile should be. 64 means the 6th column and 4th row. So on, so forth. You stop when you place a tile onto an already-occupied square.

A2 Analysis: Now you always take up 100 spaces to place your tiles, but you are guaranteed to find your solution by the 100th try. Let’s see if we can do even better.

A3: Now you see if there’s anything special about 1 to 100. Well, you can notice that the sum will always stay the same no matter what or how it’s scrambled — it will always add up to 5050. Whatever, the duplicate is, it will be 5050 plus the duplicate number. So, you take out a piece of paper. Every time you take out a tile, you add the tile’s number to the number on your paper. Then you chuck the tile away. Do this for all of the tiles, and you’re left with a number. Subtract 5050 from this number and you’ll be given the duplicate you want.

A3 Analysis: Since you don’t even care about order anymore, now that you relied on your sum, you only have to remember one number at a time, the sum of the numbers. The number of computations will always be the number of numbers, but that saves a whole lot of space without having to keep track of so many numbers.

It is very hard to see the perfect solution from the get go. Nothing would have prompted anyone (inexperienced) to add everything up and subtract 5050 from that. Only by using stepping stone solutions and getting your hands dirty could you have reached a satisfactory point.

So get your hands dirty. Do so by providing examples, examples that succeed and examples that fail. Provide solutions, solutions that fail to solve the problem, solutions that solve the problem, and solutions that solve the problem effectively. Learn from all your attempts.


Simplification comes in two forms: simplification of the problem and simplification of the examples. Simplification is a method of edging closer to the solution and finding tangible patterns for the problem itself. Actionable simplification will help you come up with good patterns to help problem solve.

Simplification of the Problem

I had a fantastic professor of discrete mathematics (Shoutout to Professor Sahai of UCB) who gave us very difficult questions to solve, but instead of being that of a harsh and resentful type of professor, he rewarded partial credit to students who solve a simplified form of his questions. He once said in lecture:

“If you can’t solve a problem, try taking some of the conditions away from the original problem and solve the easier one. Once you have solved that, start adding back the conditions back in to see what fails, and you can examine why the things that fail, fail.”

-Professor Sahai

Brilliant concept to practice and this type of problem solve is used all the time in engineering. “If we can’t go 100% of the way there, let’s go to 60%, or 70% and then re-evaluate and see if we can go further.”

Here’s an example of simplification of the problem (taken from the final of my discrete mathematics class).

Q: While fighting GLaDOS, Chell starts at the origin in the (x,y) plane, and every second moves a distance of exactly 1 meter in a uniformly-at-random direction. The direction is independently chosen every second. After n seconds, if R is Chell’s distance from the origin, what is E[R2]? (E[R2] is the expected value of the distance square, also known as the variance of the distribution).

When I first saw this problem, I panicked. I didn’t know how to start and where to go. However, I resorted to simplifying the problem, and it helped me made significant progress.

Sub-Solution: Let’s suppose instead of choosing a uniform direction at random, we could only choose 4 directions — North, East, South, and West. Let’s solve for the expected distance from the original after n seconds.

To do so, we break down the choices into change in x and change in y. Either it’s going to move in the x direction or move in the y direction, both by precisely 1 meter. So our expected distance in the x direction is 0 in one sec, and our variance is ½ (Var(X) = E[X2]+E[X]2=½ +0=½). In a similar fashion, the variance of the y distance per second is also ½. Since we want variance of the distance to the origin, x2+y2, we also have to add the variance, which results in n2/2, the expected value is then \sqrt{n^2/2}=n/\sqrt{2}.

I then realized that North, East, South, West, were special cases of the equation:

X=cos(Θ) and Y=sin(Θ) (Interestingly enough, X2 +Y2 =1) with uniform distribution of Θ in [0,2]




Screen Shot 2013-08-26 at 4.38.03 PM

Screen Shot 2013-08-26 at 4.39.21 PM

By independence,





(just think of the unit circle of trigonometry).

Therefore, using linearity of expectation, we have

line9It’s ok if you don’t understand the explanation, it’s a lot of discrete mathematics that you’ll learn someday. Just remember that simplifying the problem in my case helped me understand the question more coherently because I took away some conditions, solved an easier problem, and see if that helped me solve the more complicated version of it.

Simplification of the Examples

Q: What is the expected number of Facebook friends you should have such that you have a birthday on every single day of the year? For simplicity’s sake, we’ll assume there are no leap years and we’ll assume that all your friends have an equal probability distribution to land on any given date. (Expected number is this case is restate like this: Assuming you have X number of friends. There is a 50% chance that your X friends have occupied every day of the calendar and 50% chance that they have not. Find X).

Well isn’t that a tough problem to tackle? Where do you even start? Usually people think of the bottom line, there’s got to be at least 365 people right? One for every day, but where do I go from there?! What if it never lands on a particular date? Do I have to calculate the chances of that as well? Gahhh.

A: The answer only becomes clear when you simplify the example. Let’s say you only have one day a year and you want to know how many friends it takes to occupy your year. One of course! Well now, how about 2? Well, the first person could occupy any day he wants as long as the second person does not occupy the day the first person does. That makes it a ½ chance of landing in the correct date. From the geometric series lesson (don’t worry if you don’t know what this is), the expected outcome that it takes to each successful outcome is 1/p, where p is the probability of the desired outcome. Since there is a ½ chance that the second person is different from the first, it is as if I was flipping a coin, the expected outcome is 1 over ½, or 2. So if it takes one person to occupy date 1 and on average 2 people to occupy day 2, then the total expected outcome is 3.

See where this is going? With 3 days a year you only have to calculate each successive expected value. The first person has a 100% of landing on a date no one has landed before, so his expected outcome is 1, the second filled date has a ⅔ chance of landing on a square that hasn’t been landed on before, so his expected outcome is 3/2. The last vacant date needs on average 3 friends to fill it. So as you build each inductive step, you notice a pattern, and therefore a way to simplify it.

It seems that if there are n days, the first day is n/n=1, the second is 1/((n-1)/n)=n/n-1, third is n/(n-2)… all the way up to n/1=n. So your solution is the summation of those terms, with n = 365, which in our example, turns out to be 2365 friends.


Often, tackling a problem head on is overwhelming. It’s often easier to break the problem down into smaller problems, solve the smaller problems independently, and stitch them back together, either gracefully by recognizing a pattern among the various solutions or by using conditional statements. Here’s an example problem I’ve encountered on a phone interview (I messed up badly on the phone interview, but I went back several months later with a problem solving mindset to solve it).

Q: Given a list of intervals of which a mathematical function is defined and another interval called the target interval, return the list of intervals that intersect the target interval.

Here’s an example

Defined interval:

—–[       ]—-[   ]—-[                        ]————-[  ]—–

I want intervals in the target interval:

——–[                                                             ]—————

It should return:

——–[   ]—-[   ]—[                         ]———————-


Really we’re only interested in the brackets and the space inside the brackets. We’re trying to find the intersection of the first and second line of brackets (the given intervals and the target interval). On the phone interview. I treated every given interval as the same. I tried to test each one of them to see if it was in the target interval, out of it, or partly in it. I messed up really badly because of this. I made it overly complicated and therefore my program failed.

Here’s a proposed insight and answer.

A: Not all brackets are the same. There are brackets that are inside the target interval, and there are the two edge brackets which we have to test to see if they are partly in the target interval. Moving from left to right, we will always have the unaffected intervals in the middle be part of the result, no questions. Therefore, we just take all the intervals that are completely inside the target interval, then test the intervals that are the direct edges of the encompassed intervals to see if they partially intersect the target interval.

Here is pseudocode written to solve the problem:

For each interval in the list of intervals:

if it is completely between the target interval, add it to the list of answers.

otherwise, if it intersects the lower bound of the target interval, add the interval

[lower number of the target interval, upper number of the given interval]

otherwise, if it intersects the upper bound of the target interval, add the interval

[lower number of the given interval, upper number of the target interval]

otherwise, it’s not in the interval or touching it,

Leave it out of the answers

return the list of answers

There. Done. I broke each interval down into four cases, and handled each case separately.

Other Tactics

Some tools that come in handy that I won’t provide examples for. By knowing these tactics, you’ll recognize them when they show up and strengthen them in your toolkit.

Related Problem: When I’m stuck, I ask myself if the problem is similar to any problems I’ve solved before. I look at these similar problems and reflect on how I’ve solved them. I use the insights required to solved the previously solved problem to solve the new one.

Wishful Thinking: Sometimes I think backwards and start with the solution. I think about this elusive variable that is the solution, and manipulate it to fit the conditions of the problem.

Of course there are many, many more problem solving tactics out there. I just named a few of my favorites, and the most common ones used in computer science. You will acquire more. Some day you’ll face a problem that you can’t tackle. You’ll learn how to solve it, and it doing so, you’ll reflect on how you solved it, and you’ll realize, “Hey, I just found a new approach to a problem!” And you’ll find joy, the joy resulting in knowing that you not only have a better understanding of a problem, but that you’ll have a better understanding of  future problems as well. Give yourself a pat on the back.

Note: There is a giant list of problem solving tactics found in George Polya’s book “How to Solve It” that I highly recommend people read. Even though the book is designed to help with mathematical problem solving, the tactics easily apply to computer science problems. There are tactics like “Wishful Thinking”, “Auxiliary Element”, and “Analogy” that help with any kind of problem solving.


Learning tools are often the topic most focus on but often with the least efficiency of acquisition. My framework of acquire tools is an adaptation and simplification of several different sources of information. Each resource has its tradeoffs, most notably between the level of mastery and the amount of time commitment.

Here are my two objectives in relations to computer science that justify the methodology I use.

  1. Get an A- or better in a computer science class relating to the particular tool
  2. Get enough working knowledge to be able to apply what you learn in your code and projects

Since our focus in on computer science, I’ll be focusing on adjusting learning styles to take advantages of two things that are unique to computer science: abstraction and testability. Abstraction of computer science means that many computer science concepts and terminologies can be abstracted and used in metaphors. It’s a very intuitive subject and easy to pick up (which could explain why it’s so popular). The other beauty about computer science is that it is extremely testable. Have a question about computer science? 80% of the time you can easily test it out.

Therefore, my main focus in learning tools is through Scott H. Young’s methodology in Holistic Learning. Scott has taken 4 years’ worth of MIT computer science courses in one year, and passed. Through his experiences, he’s developed a framework for learning anything. I’ve adapted this and appended some of my own commentary, some taken from personal experience, some taken from other frameworks for learning.

The focus of his approach, as outlined in his book Holistic Learning, Young breaks down the learning process into 3 distinct steps.


The first step is called visceralization. Visceralization is the process of taking something that feels unfamiliar and becoming familiar with it. Every new concept we learn we start with an unfamiliar relationship with the concept. It is mysterious, almost arbitrary and poorly understood. To achieve mastery of the concept, you must shed light on it. Tim Ferris, author of Four Hour Chef, would consider this stage “Decompression.”

If the concept is too hard to grasp, try using several different problem solving tactics in simplification. The extreme principle helps significantly. See what happens when you take the concept to the limit. If it’s recursion, try working backwards, to the end state of the problem. If it’s an equation or some form of algorithm, trying plugging in extreme values like 0 or a really large number and seeing what happens. The extreme principle, as Paul Zeitz in “The Art and Craft of Problem Solving” would put it, “reduces the degrees of freedom a problem has.” It helps a lot when you limit what the concept can do, so you take it in bit by bit. Of course, this application of the extreme principle is just a form of the tactic Getting Your Hands Dirty, which should always be used to learn new tools. If it’s a mathematical proof, follow the proof until you understand how the proof was derive. If it’s a certain concept like recursion, understand it visually. Use diagrams, pictures, sounds, gestures, whatever it takes to get an intuitive feel for it. Claw at it, get frustrated at it, discuss it, mull over it, maybe cry in desperation, sleep on top of it, and usually in some time, it’ll feel natural to you.


Afterwards, you build models or metaphors. In other words, you take what you know to explain the things you don’t. In computer science, it’s really easy to make metaphors for things.

Before we take the right approach, let’s check out the wrong approach. Let’s check out the “formal” definition of a variable that Wikipedia has defined:

“A variable is a storage location and an associated symbolic name (an identifier) which contains some known or unknown quantity or information, a value.”

It might make sense to the average computer scientist, but to a novice, it means NOTHING. WTF is a storage location? Is it on a hard drive? A CD-ROM? Symbolic name? WTF? Are we talking hieroglyphics here? “Unknown quantity”? What does that mean?

There’s no coherency to adhere to. Nothing for the mind to stick. It’s accurate, sure, but it’s going to take serious effort for people to figure it out.

 Now try this explanation.  “A variable is like a named box where you can put information in.” Before all the technical geeks jump on my throat, please bear with me, at least past the “Exploration” section (then I’ll have a 200 yard headstart, just kidding). The explanation continues, “You can have a box named ‘myName’ and put the word ‘James’ in it by writing ‘myName=”James”’.” Now the explanation makes much more sense. “Ohhhh… so a variable is like a box you can store information in. That makes sense.”

Having these metaphors not only strengthen our understanding of a concept, it makes it more fun. It’s the novel relationship that brings about an easy understanding. Instead of saying a “A stack (it’s a type of data structure) is First In Last Out. First in last out. FIFO, FIFO,” trying to drill it in your head, you can just remember “A stack is like a pancake stack.” You can’t get to the bottom pancake until you eat the top ones. If you want to extend your box analogy, just imagine a stack of boxes. You certainly can’t open the bottom box until you take off all the top ones. That’s actually how a data structure stack works. You can’t access a variable on the bottom of a stack until you “pop” all the other ones off.

Metaphors are fun. They help us remember. You know why Reddit’s subreddit, ExplainLikeImFive and ExplainLikeIAmA, are so popular? It’s because through metaphors, concepts are more accessible, digestible, and easy to remember. Almost every ELI5 explanation involves a metaphor, every ELIAMA IS a metaphor. Browse it sometime to check out how creative some people are with explaining concepts, and how easy it is to remember certain things because of how well things fit.


Of course your metaphor isn’t perfect. It doesn’t even have to be good. That’s where exploration comes in. In the exploration stage, you test your model. You poke you model a bit, see what happens. Does it collapse? Does it stand up to your tests? Where are do your metaphors fall through? Where do they shine?

The most common method of exploration is doing problem sets. You take your beliefs about a certain concept, and use it to answer questions. There, you’ll find exceptions to what you thought was the rule. You’ll find rules to things you thought were exceptions. You’ll find inconsistencies in your model, and you’ll learn to fix your model until it’s as sturdy as a fort.

After you do problem sets, or maybe while doing problem sets, you should do some self-directed exploration. Feed your curiosity. If you followed my analogy earlier of using a box to represent a variable, ask yourself some of these questions (I’ve provided some methods to test them out and find out the answers. They are not exhaustive. There are other ways to answer and explore these questions, and of course, come up with new ones):

  • How big is the box? Is there a limit on the amount of things you can put in it? You can find out by putting in a really large number into your variable. You can ask someone what would happen. You can have many of boxes and check your computer memory space. You can google it. Preferably, you’d ask a friend.

  • What happens if I put another item in the box? Does it take out the original item and put in a new one? Does it store both items? Try assigning variable names to different things and printing them out on your computer. Do you have the original item, or do you have the new one? Do you have both? Then ask yourself this question: “Is this true for all items you put in?” What if you put a rope that’s tied to another box? I won’t answer that right now, it has to do with pointers and references.

  • What would happen if I put a box in a box? Is the box big enough? You can try to answer this by assigning two variables, A and B, to 1 and 2 respectively. If we say that “=” means putting a thing in another box, by metaphor, “=” means “put box B in box A.” See what happens when you print a, does it print out “B,” “1,” “2,” or “ERROR”? Just for this question, I’ll tell you that it’ll print out “2.” Then you’ll ask yourself, “Well, in that case, is box B in box A or not?” and “Did box B transfer its 2 to box A?” Then you’ll print out box B’s content. “2.” Phew, it seems like box didn’t transfer its content to box A. The first question you may not be able to answer by conventional programming, you’ll have to Google it or ask someone.

There are so many more questions to ask about the metaphor of boxes to describe variables. Jumping back to metaphors for a second, a student would not have conceived of these questions beforehand if he had not imagined and visualized variables as named boxes. The student would  have fumbled around with figuring out what a variable exactly is without allowing his curiosity to guide his exploration. These example questions are legitimate questions about variables, whether they are in the form of formal terminology and language, or by metaphors. They are not “dumb” questions. If a metaphor helps the student to understand the concept and think about it better, by all means he should use the metaphor. By the end (if there is one) of the questions, you’ll have a pretty special type of box for a metaphor, and at one point, in which you’ve encapsulated and understand the subject enough, you won’t need the metaphor anymore.

Use this opportunity to create some of your favorite metaphors. Your metaphors are yours to keep. It’s like having an inside joke with yourself. You’ll be able to see the concepts you’re learning much clearer. You’ll be able to enjoy constructing a sound metaphor that is bulletproof. Then you’ll be able tell your friend (your peer), “Hey, I just realized that arrays are like vending machines.” while provide a reasonable argument for it.

A Coherent Meta-Example

All right, all right. I’m about to drop some wisdom in here. Since you’re reading my guide and you’re trying to learn this methodology, I’ll use my (really Scott Young’s) system to teach you the system.

Ok, ok. Learning a concept is like playing Pokemon. First you have to catch a Pokemon. The process of catching a pokemon is the process of visceralization. You see it, you claw at it, you poke it, you deconstruct it, then you encapsulate it into a pokeball. Once it’s yours, you have a basic model. You take your pokemon and you train it and nurture it. You feed it and scoop up its poop and despite that fact you might still take it to bed with you in your sleeping bag. You learn its skills, its shortcomings, and its stats. You work on it and spend time with it. Ok ok, now you take your pokemon up for the test. In a tribute to the 1st generation pokemon, it’s the Pewter Gym, or Brock’s gym. Then you say “Go Pikachu! Fight Onix!” If you defeat the leader, great! You’ve earned your badge, and you’ve mastered the concept. If not, you train your pokemon some more and try again. If your pokemon, or model, fails too many times, maybe it’s time to let it go. Maybe it took you 5 tries to realize that Onix is impervious to electric type Pokemons. So you let go of your Pikachu, pick up a new pokemon, preferably Squirtle, and try again. By the time you defeat the gym leader, you’ll have a fantastic new Pokemon, and a neat badge to show how awesome you are (online courses are all about badges these days. They probably caught on by now).

The Roadmap

Below is a roadmap based on my personal computer science learning journey and UC Berkeley’s computer science curriculum. It’s based on “semesters,” but that really doesn’t mean much besides a general chronological order to things

Semester 1 – Practical Programming

You will learn how basic programming concepts as well as dip your feet in the world of programming. I find “Learn Python the Hard Way” the best at teaching semester 1.

Use this checklist to make sure you learn all the concepts. Don’t move on until you mastered all of these concepts:

  • Variables
  • For Loops
  • Lists and Arrays
  • Functions
  • Dictionaries or Hash Tables
  • Debugging methods
  • Booleans
  • Conditionals
  • Classes and Objects
  • Basic Recursion


Semester 2 – Data Structures & Discrete Mathematics

Python is too encapsulated to learn about data structures. Java is a better way to go about it. I find UC Berkeley’s CS61B Course Page the best way to go about it. You’ll find resources, materials, and exercise about the class. You’ll implement the things you take for granted from Semester 1 in Java. Email me and I’ll even try to get you into the Piazza group, which will have a live support community of UCB students taking the class (it’s super duper helpful when other people are keeping you on track).

Here’s semester 2’s checklist:

  • Objects and Arrays in Java
  • Hash Tables in Java
  • LinkedLists
  • Trees (Binary Trees and Binary Search Trees)
  • Stacks and Queues
  • Graphs
  • Sorting (QuickSort, MergeSort, SelectionSort, and InsertionSort are the most important ones)
  • Time and Space complexity

Also there’s discrete math, which provides a mathematical backing to your computer science education. Also not really necessary, I find it helpful in building your repertoire of problem solving tools and tactics.

Class and Checklist:

  • Probability and Counting
  • Load balancing
  • RSA and Cryptography
  • Proofs
  • Induction
  • Graphs
  • Computability and Self Reference


With the knowledge you have by the end of your second semester, you could probably score a basic internship for the summer or the time being. If you were lost to where you are suppose to go in semester 1 and 2, you should have a general sense of which step to take next by now. So I won’t give you any more roadmap, you can proudly call yourself a “computer scientist” now. You also have the license to tell corny computer science jokes, like,

Q: How did the programmer die in the shower?

A: He read the shampoo bottle instructions: Lather. Rinse. Repeat.

If you don’t get this now, come back to this after semester 1 as a treat to yourself, you’ll enjoy it :)


I hope this guide has been helpful for you. Now I must warn you, this guide is not “the secret” to learning computer science. It is not just sunshines and rainbows here on out just because I’ve taught you “insider tricks to navigating away all the difficulties”. You WILL have hardship. You WILL have frustration. You’ll have a moment where you look everywhere for help, even here, and not be able to find it. This guide is not meant to teach you how to avoid pain and take “the easy path,” it’s meant for you to take the hard path but enjoy the adventure while you’re there. One night, probably at 4 or 5 or 6am in the morning, when you’re stuck in the library, or your dorm room doing a problem set that’s due the next day. You’ll be tired, hungry and gross, and you’ll feel lost and hopeless. But then you’ll think back to this guide, think about this warning, the warning I’ve made, “You WILL have hardship,” and you’ll tell yourself, “Hey, it’s ok that I’m frustrated, it’s ok that I’m lost. I was prepared for this difficulty to happen when I began my journey as a computer scientist, and I am prepared for it now.” Good luck to you all. You will all succeed if you believe you will.

I’ve spent 30+ hours writing this guide, not including countless hours reading books, watching videos, and experimenting with learning styles and techniques, all while being a computer science intern this summer. If you’ve enjoyed it, feel free to drop me a line saying thanks. The best emails are the ones who are fundamentally impacted by what I write, for, it is the only reason I write. If you have questions, comments, or concerns, reach out to me and I’ll try my best to help you out, if not direct you to someone who can.

My email: jamesmaa17@gmail.com

My Phone Number (My friend said this would be a good idea): 650-388-0628


References listed in a poorly, non-MLA format. Starred references are materials I recommend you read if want to further explore the strategies for accelerated learning.

Four Hour Chef by Tim Ferris

Mastery by Robert Greene

Holistic Learning by Scott H Young*

Accelerated Learning by Brian Tracy

Art and Craft of Problem Solving by Paul Zeitz*

Inner Game of Tennis by Timothy Gallwey*

Do Grad Students Remember Everything They Were Taught? answered by Mark Eichenlaub*

The User Illusion by Tor Norrentranders

Cracking the Coding Interview by Gayle Laakmann

How to Solve It by George Polya*

Harvard 1504: Positive Psychology by Tal Ben-Sharar (Used his concepts to write my conclusion)

Fun Programming Challenges on ProjectEuler.net

Summer Hangout Proposal June 14 – June 20

Hello Friends!

Instead of posting multiple Facebook messages trying to cajole everyone to hang out with me, I’ve decided to write this post hoping people would want to hang out with me and possibly do some activities together. I have several activities listed that I will do participating, and you can hit me up if you want to join me :)

June 14

Frisbee (6:30pm -)

Come play frisbee with my high school friends and I. It’ll be fairly intense but we definitely allow newbies to join. I’ll intro you if you need one.

Cook & Eat Dinner (8pm – 10pm)

Come cook dinner with me! I’m currently going through the “4 Hour Chef” plan and am on lesson 4, which involved cooking crabcakes. The dinner’s supposedly for 4 people , but 2-3 people are fine to eat as well. If I don’t find one of the ingredients (which I wasn’t able to at my local Safeway), we might cook pasta instead.

June 15

Bike to Berkeley (All-day)

I always wanted to bike to SF, then onto SF bridge, to Berkeley. These aren’t made plans, but I’d be down if someone joins me. We would leave in the morning, bike to SF, eat lunch, bike to Berkeley, and stay there the night (we can stay at my rented house), and bike back to Palo Alto the next morning.

Summer Cleaning (Some of the day)

If the bike trip fails, I’ll be doing some summer cleaning. You’re welcome to join. There will be music and food we can eat. You can even have some free stuff I might throw away.

Open to anything

Let me know if you’re planning on doing something as well!


I’m still free lunch I believe. If you want to grab food hit me up.


Same with dinner, not at 7-8pm though.


June 16

Open to anything

I’m open to pretty much anything. No plans yet, if nothing happens, I’ll be hanging out around downtown, probably in one of the coffee shops to do work. Of course anyone’s allowed (and encouraged) to join me.

Open Lunch

Grocery Shopping (3 or 4pm)

Will be purchasing ingredients for my upcoming week. Companions welcomed. I’ll probably go to Safeway or the Milk Pail in San Antonio, or both.

June 17

Cooking & Eating (7 -9pm)

I’ll be cooking “Bittman Chinese Chicken With Bok Choy.” Guests welcomed! Sounds delicious actually.

June 19

Dinner in Mountain View (6:30- 7:30pm)

Open to getting food in Mountain View.

Swing Dancing Class (8:15pm -)

Come learn to swing dance with me in a beginner-friendly class. There will be a dance party afterwards. I think it’s $16 for a drop in class + party.

June 20

Cooking & Eating (7-9pm)

We’ll be making salads, eggocados, and experimenting with boiled eggs!

Nothing Works? Want to do something else?

Let me know if you still want to hang, I’ll see if I can move things around or set future plans :D I’m open to all sorts of activities! Coffees or meals are fine as well!

Enough Brainwashing. Choose a College.

Note: I’m speaking from a personal standpoint. You can choose to interpret this material however you want. This is not intended to be one of those articles pitting schools against each other and comparing which one comes out on top. Everything is my opinion and my observations. Which also means that I will be speaking for UC Berkeley, and most of my generalizations is only under the assumption of UC Berkeley. Also, you don’t have to read my story, after 3 pages in, I realized it may not be as relevant or excited to you as it is to me. Jump to the reflections part if this is too long of a read.

I remember almost exactly a year ago when college decisions came out. I was devastated. You see, at the college I attend now, UC Berkeley, there are a variety of students who get admitted, but generally fall into 2 categories. There are students who are happy to make the cut, and then there are students who fall from grace from the Ivy’s. Last year, I fell into the latter half of the population.

After fumbling to get everything together, I made a last-minute decision to attend UC Berkeley from the pressures of my parents. I actually never considered going there. It was always kind of a safety school for me. I’ve done mental calculations in my head, which I would evaluate myself against my peers, figure that I was in the top 10% of my school, and assume, yes, statistically speaking, coming from a rich and well educated school like Palo Alto, there is somewhat hopeful chance that, yes, I do deserve to go to the Ivy’s.

But that acceptance letter never came, and I dreaded my eventual defeat. I was forced to face the reality — I was not in the top 1% of the world. I was repeatedly told through numerous emails that despite all my struggles, my accomplishments, my friends, and my existence, that I was not special enough. Furthermore, I was going to attend a school that would theoretically be surrounded by thousands of students who look exactly like me.

For the first couple of weeks when I attended UC Berkeley, I socialized, I tried out as many clubs as I could, and I made damn sure that I wouldn’t be like any other Asian there. I was confident, but I was also arrogant as hell. I prided myself knowing that I was better than everyone else because I wasn’t part of the system and because I belonged at a higher-ranked school.

I’ve done things that were immature and were lashing outs from my bruised ego. One of them was that I chose comfort over uncertainty. To me, Friday nights were not interesting enough for me to go out and venture. People were either spending Friday nights partying or staying indoors studying. I chose to not associate with either stereotype and just lounged in my dorm. I would surf Reddit sometimes, play guitar on others, but generally, I felt too suffocated to do homework, but too repulsed to go out and party.

I also didn’t expend the effort to make close friends. My schedule is packed. I’m busy, how would I have time to make friends? Another consideration was that it was hard to find someone as intellectually stimulating as me. People talk about how excited they are to be at UCB, about how difficult single variable calculus was, and I just sit there, thinking, “Wow, how did I end up with people like them?” It was an immature thought, but it was understandable in hindsight.

After coming back home for winter break feeling somewhat defeated and unaccomplished, I took a self-reflective time-off to re-evaluate my trajectory. I was not happy with myself. I was a resentful being with little going on with my life. It seemed I could either be resentful or defeated for my circumstances.

At the beginning of my next semester, I managed to get dinner with some of my personal mentors, two UCB students who seem to have more of life figured out than me. They offered me solid advice for some of the difficulties I was facing.

One of the more memorable advice came from my friend Carl, who told me that “It’s not about the position you are in life. It’s about the velocity at which you are going.” This struck me viscerally. Most of my life I’ve been trying to get to point B, and always felt like I’ve been shortchanged or I’ve been staggering behind. The regrets of the past and the worries of the future bothered me so much they’ve made me miserable and helpless. Everything was outside my control. It took Carl’s words to understand the only thing I should focus on was the present and how I was continuing to develop.

I decided to adopt several changes my next semester to see how everything would work out.

Instead of combatting my lost sense of identity, I decided to try to embrace the anonymity it gave me. I tried rejection therapy in Berkeley for 30 days, which entailed me getting trying to get myself rejected at least once a day to overcome my fear of rejection. I didn’t have to worry so much about my fears of rejection in Berkeley because if I screw up an interaction, it’s not like the other person could recognize me the next day, and it’s also not like I could recognize them either. There was a very liberating sense of freedom associated with this revelation, and the whole therapy has taught me how to differentiate myself.

Speaking of friendships, I’ve also made more time to make and nurture friends. Luckily, I still had several friends that stuck around long enough to see my change, and I was able to become closer friends with them.

I also dedicated time trying out new things (no drugs). Swing dancing? It sounded interesting, so I tried it out on a Friday night (while I thought most people spent this time partying), and I love it! I regularly attend the swing dancing group now. Recently I’ve found out I have too many meal points, so I asked the community if anyone would like to grab lunch or dinner with me. Overwhelming responses, my week is filled up with lunch and dinner dates now.

Now that I’m almost done with my first year here, I feel a new sense of excitement and adventure in my life! I’m heavily involved with the most amazing computer science group in the world, Hackers@Berkeley, I have a supportive network of friends around the world (not just in Cal), and I’m learning so much from my school, my peers, and myself. I keep an active blog keeping track of all the exciting things that are going on from day-to-day.

My Reflection

I was having lunch a couple of weeks ago with my friends Mark (Stanford) and Daniel (Cal) and we were discussing some of the complaints Stanford and Cal students were having over their classes. Mark said (some serious paraphrasing here), “Some of my classmates were complaining to the professors that the midterm had material that wasn’t explicitly covered in lecture. Students would grumble, ‘Wait? You want us to extend our knowledge? Outrageous!’” Dan recounted a similar experience in Cal which students complained to an economics professor who put a midterm question that asked students to infer the answers. The point I want to make is that it seems that students seem to rely too much on institutions for their educations. They seem to adopt this kind of reasoning, “It’s not my job to learn. It’s your job to teach.”

Academics only serve as a microcosm of a bigger problem at hand. I think there is a growing trend of students who rely too much on letting their colleges define who they are. The effect permeates from the bottom most schools to the top tiered Ivy’s. The lower-tiered students feel disenfranchised, “My college sucks, and therefore my life will suck as well.” The top-tiered students feel entitled, “My college is good, therefore my life will be good as well.” Though statistically top-tiered colleges on average fare better financially than lower-tiered colleges, it has been shown and demonstrated that the discrepancy is not due to the college. In a study cited by my friend, researchers have determined that if you compare the average Harvard student and the average UMich student, there is a discrepancy in financial well being. However, if the researchers took away factors that separated individuals like outgoingness, people skills, optimism, and confidence, then each individual’s schools makes almost no contribution to an individual’s income. Because we let our college define these attributes of ourselves (e.g. Harvard students are outgoing, Stanford students are entrepreneurial, MIT students are intelligent. Berkeley students are hard-working. And at the same time if Harvard rejects me, that must mean I’m not outgoing enough), we fall into the grooves the educational system.

These attributes, whether it’s confidence, people skills, resourcefulness, or creativity, could be obtained sans a good college, and even without any college. You yourself are accountable for your own education. If the school isn’t teaching you what you want to learn, you should be seeking other avenues for learning. You should be in the driver seat of your education, and your life.

I think it’s a legitimate question to ask what would happen if you strip a man away from his possessions, his material wealth, and his history. What would be left of him? What will he have left to prove himself? That should be a question that you should be asking yourself, “Without my college degree, what will I have left to prove myself?”

A couple of weeks ago I was pondering about the influences my external environment have on me. It would be foolish to deny that college has no tangible effect on an individual, but at the same time how could I mitigate the various pressures around me that ask me to be someone who I am not? After all, I still had homework to do, grades to earn, and a living to make. After discussing my problem with my floormate, Patrick, I jokingly mentioned that “Yeah… I think I should go read a book about self-confidence or something” (I have a small-obsession for self-help books). Patrick pauses for a second, and he respond, “You know what? You should learn karate.”

“What?” I asked. “How would that solve my problem?”

“In Japan there is a form of karate named [insert Japanese karate name] that asks a student to enter into an empty room to train by himself. A student would enter, throw punches and shout. The idea is that if you can create a sense of self in a vacuum that will defend itself, you will be able to stay in control of yourself. You will have created a sphere of control around you that no one can touch.”

What I found very fascinating about the practice was the vocal yells of the student. To shout into emptiness is something we rarely do for the sake of ourselves. It always feel awkward to speak into the world and receive no feedback or acknowledgement of your presence or existence. This lack of external confirmation and contradiction also allows us to be who we really are. This practice deconstructs the external influences of ourselves and allows us to build our own sense of selves, from ourselves.

I think it was only when I was stripped away of my past and put into a vacuum did I get a better sense of who I was and allowed me to define myself. It was only when I didn’t have anything to hold onto when I decided to stand up for myself.

Some people never grow out of their attachments to external objects. Many college students (including UCB kids) become complacent in the school of their choice and invest their identity and ego in the institution. They are promised financial security, a higher quality standard of living, and a more fulfilling life. Granted, schools could provide the artificial presence of these desires, but it is a fragile construction that could collapse anytime.

You see the examples of this every once in awhile. We call this the “mid-life crisis.” It is the moment of many people’s lives when they feel like they have no significance or meaning in themselves, despite their college degrees, their six-figure salaries, and their double-sided resumes. Then, their flawed paradigms tells them that the solution to their loss of self is to invest their ego’s into material objects. They buy midlife-crisis sports car, marry midlife-crisis trophy wives, take midlife-crisis vacations, and do other reckless things in hopes something will fill the void that was their sense of self.

If you feel happy getting into the college of your choice, great! Just remember that you’re still in the driver seat of your life. If you still feel bad for attending a less-desirable one, that’s fine. Just know that it’s usually only at the time of uncomfort do we ever feel the need to extend past our comfort zone and re-innovate ourselves.

A lot of you guys (referring to high school seniors) may not viscerally understand what I am saying right now, and that’s ok. If you have to be upset, be upset, but don’t let it dwell. Go enjoy your summer vacation, do things that will challenge yourself (whether physically or mentally), and look forward to a awesome new school year in college!


I’d like to conclude with an offer to help and to listen to anyone who seeks my help. If you want college or life advice, or just want to contemplate the existence of the universe, ask me! I’d be happy to spend at least 15 minutes helping a fellow friend (or even stranger) out if it could help them make a better decision or ease their worries. My email is jmaa@berkeley.edu. In the meantime, I recommend this video of a commencement speech titled “You Are Not Special.” It’s one of my favorite speeches that kind of relates to what I’m talking about.

What Can You Buy With Your Meal Points?

I’ve recently come to the conclusion that I have way too many meal points than it is necessary for a first-year individual. Usually around this time of the semester I try to think of ways I could spend some of those extra points. UC Berkeley has this policy over meal points to try to promote spending in which if you don’t use all your meal points by the end of the semester, you lose the points. It’s the use it or lose it policy. Under these guiding principles, I bought a yoga mat, a coffee tumbler, several minor sports equipments and packs and packs of candy. But now that it’s the second semester and I already have every fulfillable want fulfilled (along with taking on a low-sugar diet), I’ve been finding it increasingly difficult to spend my meal points. There is a finite amount of space in my stomach. As my floormate Patrick Truong has said, “I’m just sad that the Golden Bear Cafe doesn’t sell XBox 360’s.”

I came up with a pretty neat revelation last night. Here is  what I propose:

I will swipe anyone in Berkeley in for a meal. But under either of two conditions:

1. You have something interesting to say or are an interesting person


2. You want to learn more about what I have to say

Let’s take these points to explain my motivations and your potential benefits.

1. If I could be grateful for any one trait or attribute about myself, I would be grateful for my curiosity  I love to learn and get to know more about everything I could possibly know. I also realized that from a personal standpoint, some of the best ideas I’ve gotten were from other people, and often over a meal. I’ll list two personal case studies among several.

One of them was swiping Carl Shan into the dining halls. I’ve been having a 1st semester slump and wasn’t too happy with my current trajectory. My friends recommended that I reach out to Carl, and almost out of a personal dare I decided to contact him. After swiping him into crossroads, we talked about different aspects about living a fulfilling life and he helped me sort out what I really wanted to do with my time here at college. I could not have been the same person without that dinner.

The other was getting lunch with Gerald Fong. I never paid for his wrap at Qualcomm cafe because he had his own meal plan, but it was the lunch date that counted. Gerald taught me what it takes to build a good network of friends and how to support this network through generosity and genuine interest in their lives and outcomes.

From these meals with other people, I’ve learned more about life than I ever did before, and it was certainly worth more than a coffee tumbler (or several). I want to learn more from you. Almost every UC Berkeley student I’ve met, I’ve had something profound to learn from, and in the end, we’re a really intelligent school! So if you have something that you want to say, let me know.

2. I am only human, sometimes all I want is someone to talk to. At the same time, I very much love making a difference in other people’s lives. Whatever it is you would like to know about me, I could tell you. If you want to talk about your problems, that’s fine too, we can figure it out together. I’ve made a personal commitment (from a good friend Alton Sun) that every person I meet, I’ll find 2 ways I could help them, either by giving advice, connecting them to the right person, or helping them out directly.

I have no particular expertise in any subject, but I do retain particular interests in psychology, sociology, philosophy, game theory, computer science, dating, and big ideas. So at the very least, if you ask me about something in these particular fields, I’ll have something to say.

In the spirit of the community, I also propose that other people who also have ludicrous amounts of meals points do something similar. As much as you would like to spend your exorbitant prices on yoga mats and sour patch kids, nothing is as rewarding as getting to know someone over a meal. Reach out to an old friend or help out someone in need. Buy someone late night, they will always be grateful for your generosity.

So reach out to me. Say hi, ask me for lunch and ask me to swipe you in, I’ll gladly do it! Let’s talk some time, about anything you want. I’m screaming here “I am an available resource! I am a free friend!” Because in the end, it’s either use-it or lose-it.

Rejection Therapy Day 1 – 5

Day 1: Ask someone to borrow $20

I asked with my friend, Jessica Cox. She clearly picked the right person, because I knew this woman was going to hold on to her money like a snapping turtle  (which ironically is what her face reminded me of). I don’t dislike her, I lash out when I’m rejected. I’m going to iron this fear and insecurity out as I go.

She rejected me.


Day 2: Birthday Freebies

I went to Baskin Robbins and asked the old Asian man there if I could have a free icecream cone because it was my birthday. He asked me if I had a certificate and I said no. He rejected me.

What surprised me was that I continued to press. I asked him if it was ok since I have my ID with me. I showed him the I.D. with my birthdate on it and I said, “wouldn’t that be enough?” His face was as stern as a botox patient, and I shamefully exit.

But not really. What I’m starting to understand now is that people reject the proposed situation, not you. So the man did not look at me with disgust or condemnation, he was just stoic…. woo


Then Justin Fang and I went to Town & Country to ask for freebies. Justin actually asked Coldstone creamery for me. Not that I wanted him to, but we were waiting in line to ask and he got impatient. He just went in front of the crowd and asked. The icecream person also said no, followed by a “sorry, but Happy Birthday!” I would just go to shops to get these Happy Birthdays, at least in rejections, you know people are honest with you. If their interests align with their actions, you know they’re being honest, which I find very comforting the the war zone of rejection


Then we went to Kara’s cupcake’s to ask them if they would give me a free cupcake. The only girl who was there apologetically said “sorry.” But what was awesome was she quickly turned optimistic and filled the gap “but Happy Birthday!” It was so sweet of her. I don’t even feel bad for being rejected. What a nice girl. If I had just walked by the store and assumed she would reject me, I would not have found out she was a kindhearted person


Day 3: Photo with a Stranger

I asked a busy looking guy at the Apple store in Palo Alto. I only asked him because my friend Emma Sameroynina dared me to, apparently by his very introverted appearance. So I said, why not? And approached him.

He was on his iPhone when I interrupted him. “Hey,” I smiled. “can I get a photo with you?”

He face contorted in confusion “Why?”

“It’s for a scavenger hunt.” I blurted, a bit nervous.

“Uh…sure.” He said.




I guess I kind of pussied out by fibbing (Samson’s word of the day) a reason instead of being direct.


So I decided to ask another person. Thankfully this guy rejected me because he was busy. Otherwise I’m sure he would have said yes. What a close call.


Day 4: I forgot :(

I was going  to go out and interact with people, but I mostly stayed home and played Just Dance with Catherine and Justin Robinson

Day 5: Ask to Visit the Employee-Only Section of the Store and Ask If I Can Change the TV Channel at a Restaurant

I was at the Stanford Apple Store today waiting for my friend Emma to get her laptop fixed. The Apple store had a door that was practically sealed to the wall that was employees only. I wanted to see their stock of Apple products, and see what secrets lie behind the door.

So I asked an Apple employee if I could check out the employee’s only section of the store. I told that it would really make my day if I could go there. The person looked confused, but then replied, “Hmm…. I’m not sure. You should ask our manager.”

Then he guided Emma and I to the store manager of the store. The employee told the manager about my wish to visit the employee’s only section of the store.

“So you want to visit the employee’s only section of the store huh? Unfortunately, you don’t work for Apple anymore and rules are rules.” He said in the most sincere way that I didn’t even feel rejected. Wow.

“Can we please? It’s also his birthday today! Can you sing him happy birthday?” Emma interjected (also stealing my rejection therapy the day before).

“Oh really? Sweet! My birthday is this Saturday. Bro-fist Capricorn!” He bro-fisted me. I never felt so self-validated. Sweet, a bro-fist!

“Although I can’t let you see the back of the store, is there anything else I can help you with?” He asked.

I declined. We made some smalltalk about birthday plans before he had head off to help other customers. I thought he’s the nicest guy I met all day.


Later the night, we went out to eat dinner at a peaceful Japanese restaurant. There weren’t that many patrons but there was a sushi bar with televisions hung around the restaurant. It was playing ESPN, but I am not a big fan of sports. I wanted to watch Cartoon Network instead. Adventure Time all the way! So when the waitress walked past, I waved her down and asked her if she could change the channel of the television.

She apologetically said no, that they always keep the television on the same channel. I said that’s ok, like I’m forgiving her.

She seems to become friendlier as the meal went on, especially since she obliged my friend for an extra lemon (so we could have a lemon eating contest). She did protest a bit though.

“You need two lemons? One lemon isn’t enough?”

“Yeah. I need two.” Emma sternly said.

At least the waitress rejected me.


Lessons Learned:

  1. Like I’ve said before. Most people reject the situation, not the person. Unless if you’re patronizing or condescending, they won’t hate you for asking for things.
  2. In fact, sometimes people will like you more. If you ask them as if they are a long time friend and ask like they are willing to oblige you, then they will like you more, whether or not they accepted or rejected your request. You interacted with them in a genuine and friendly way, and sometimes that’s all people ask for
  3. Sometimes people are apologetic to rejecting you. They feel bad for rejecting you because they think they are hurting your feelings. You could use this to your benefit, like for instance the waitress giving us an extra lemon when she felt bad for not letting me change the television channel. But other times they try to make it up to you by being extra nice to you, like the Apple Store manager who gave me a bro-fist after rejecting me.