Author: jamesmaa


Ultimate Productivity Hacking Guide Part IV: Energy Management

Energy Management

Not having sufficient energy or motivation undermines everything else in the guide since most productivity interventions require some level of energy and commitment to execute. If I feel depressed, no amount of verbal self-encouragement or TED talks is going to get me to do my homework or check my to-do list. This section of the guide is basically how to live a healthy life, because even if health weren’t the most important part of your life (which I believe is), without it you certainly would have a really hard time getting things done. Time to get healthy.

Sleep, Exercise, & Diet

Diet, exercise, and sleep are the trifecta of energy management. The summary is that if you eat right, exercise regularly, and sleep well, you will pretty much have enough energy to get all the things you want done. Sleep Sleep is so important because it’s the only time your body and mind gets to rest. Studies on sleep deprivation indicate a swath of intelligence and mood impacts in participants . You spend 8 hours a day sleeping, so any marginal improvement of sleep quality and duration has very high yield. When I started measuring my sleep with my Fitbit, I was appalled by how little high quality sleep I got. Compared to my peers and family, I’m a really sensitive sleeper. I can’t share beds with people, and I have a hard time falling asleep. Seeking ways to improve my sleep quality yielded some subjectively high results in memory, focus, and mood. Start with the basics. Make sure your bedroom has the right lighting, temperature, and noise levels. White noise machines and earplugs help with the noise, black curtains help with the lighting , and fans and heaters can help maintain an optimal temperature. Install flux on your computer and configure Night Shift/Night Mode on your phone to filter out blue light at night that is detrimental to sleep quality. Design a sleep hygiene routine. I have a physical post-it on my wall that is a series of steps to get me in the mood for bed. It helps because I’m pretty mindless by the time I’m sleepy, and may end up doing dumb things instead of getting ready for bed (browsing reddit, checking my phone, playing video games, etc). Here’s my post it:

  • Drink 16oz warm glass of water. (3 mins)
  • Fill bedside thermos and water bottle (5 minutes)
  • Brush teeth (5 minutes)
  • Floss/Mouthwash/Retainers (5 minutes)
  • Bathroom if necessary (5 – 10 minutes)
  • Take melatonin pill with some water
  • Pack for next day (5 minutes)
  • Stretch if necessary (10 minutes)
  • Read on bed. (20 – 30 minutes)
  • Pee if necessary (2 mins)
  • Read More


    Ultimate Productivity Hacking Guide (Part III): Behavior Management

    “I hate writing, I love having written.” — Dorothy Parker

    I would not consider myself especially good at exerting willpower. I have a hard time saying no. I don’t exercise much self control in most domains of my life (e.g. diet, finance). Even now, I’ve had bouts of egregious non-productivity playing video games, watching television, or procrastinating on work.

    What I am good at is designing systems that don’t require exercising self control. Self control is a finite and unreliable resource to depend on when producing behavior, so you should find ways to either to limit the amount of willpower you need to exercise to produce a behavior.
    We’ll talk through some general themes of good systems of producing behavior, roughly ranking in terms of easier to harder to implement.
    Read More


    Technical Recruiting Guide for New Grads & Junior Engineers

    Note: The views and opinions expressed in this article are those of the author and do not
    necessarily reflect the official policy or position of Scratch.

    Other note: There are a few referral links for Hired and Triplebyte. Feel free to just go to the site if you don’t like going through referrals, but we both get free money if you end up getting a job on the platform 🙂

    Your career is a big deal, no matter how you think about it. You spend about 35% of your waking hours (not including the commuting time and all the logistical stuff surrounding work) working. You’ll spend more time with your company, your boss, and your co-workers than you do with your best friend, spouse, or family. Your career is also your livelihood. Whereas some people can work leisurely hours with six-figure salaries, some people struggle with mid five-figure ones working overtime week after week.

    With something as important as your career, it’s worth investing time into maximizing your opportunities. One of the highest leverage things you can do is to figure out how you can put yourself in a place where you’re happy and can grow.

    I’m a relatively inexperienced engineer, so I can only speak about the experiences I’ve had so far. But my lack of experienced hasn’t stopped me from systematizing various verticals of my life nor doing pretty well in my career so far. So I will lay out how I approached my last job hunt.

    Although I believe my advice applies broadly to most new grads and junior engineers, I understand that there are advice and observations that may not apply to you. Just to lay out my cards upfront and give you chance for bias correction, here was my background before my job hunt.

    • UC Berkeley 2016 Graduate with 3.6 GPA
    • Experience interning at Lexity, Yahoo, and Pinterest
    • Worked at Reddit for 2 years on ad-related technologies
    • Live in Berkeley

    Here’s my LinkedIn.

    Preparatory Work

    Time Commitment and Scheduling

    One of the most important prerequisites to get right is figuring out the logistics of your interviewing schedule. Interviews take time, and doing enough interviews to have a healthy amount of options of table takes considerable time. Finding my 2nd internship in my career took approximately 120 hours spanning 9 weeks. My recent job move took approximately 110 hours spanning 7 weeks. It’s a big time commitment to do recruiting right, and it’s going to be worth every hour of your time to get yourself an awesome job. At least 50 hours+ of work should be the bare minimum of due diligence I think new grads and junior devs should put in.

    Most interviews these days are:
    1 recruiter screen (1 hr)
    0-1 take home assignment (3 – 6 Hrs)
    1-2 technical phone screens (1 – 2 Hrs)
    1 full day onsite (8 Hrs)
    = 13 – 17 hrs/company

    Not only that, there are some preliminary exercises and research that you are going to want to do:

    1. Values reflection (2 – 5 hrs)
    2. Company research and lead generation (5 – 10 Hrs)
    3. Interview practice (15 hrs +)

    So you have to figure out how you’re going to dig up 50-120 hours of time in your current schedule. For many of you, you’ll be in school, which offers some flexibility with phone screens and onsites. But some of you have full time jobs, in which it is much harder to schedule and coordinate recruiting calls.

    Some questions you might want to address when thinking about where to find time to interview:


    1. How much can my academics suffer in order to find a good job?
    2. Am I taking on too much school work this semester such that I cannot put into time into recruiting? Should I drop some classes?
    3. Am I doing too many extra curriculars that will distract me from spending time recruiting?
    4. How am I going to take days off for onsites?


    1. Should I quit my job to recruit full time?
      1. Upsides
        1. You don’t have to worry about scheduling
        2. You can concentrate full-time on recruiting. Trust me, you’re going to get busy
        3. You’ll have more clarity when deciding
        4. You don’t have to keep things undercover from your existing boss


        1. You don’t get paid
        2. You have to maintain your current work responsibilities while recruiting
        3. You are considering staying at your current company as an option

        Should I tell my current manager that I’m recruiting? This was one of the most emotionally draining decisions I’ve had to make. In a small-sized poll amongst my friends, 70% of my friends say you should wait until you have an offer to tell your manager, the other 30% thinks I should tell my manager out of respect for your manager.
        How will I be able to take time off for onsites? Ideally you’ll be able to do at least 3 – 5 onsites for your next role to have a healthy number of options on the table.

        However you decide to make the time to do your recruiting, it’s important to get that set aside as early as possible. Now that you have time set aside you’ll understand approximately when you’ll have a job lined up. With due diligence, you can reasonably expect something to happen within 8 weeks.

        Scheduling is a bit of an art. There are two general considerations when it comes to scheduling — how much do you like the company and how long each company interview process takes.

        With preference ranking, you want to backload companies you’re most interested in towards the later stages of your interviewing season. You’ll naturally get better as you start interviewing, which means you’ll be closer to peak performance right when you’re talking to companies that really interest you.

        If you want to know how long the interviewing circuit takes at each company, Glassdoor has interview reviews that will give you good sense of how long the whole process takes. You want to line up all your onsites as closely together as possible, since it lines up your offers around the same time and is slightly easier logistically to handle. The coordination also helps you move fast and avoid exploding offers. My interview experience so far has been that even though Google and Facebook are great places to work (and therefore should be backloaded for some people), their interview process can sometimes take multiple weeks. Some companies didn’t even get back to me when I accepted my most recent offer.

        Work Values

        Beggars can’t be choosers, but thankfully it’s an engineer’s market. If you don’t think you’re in a position to choose, make sure you exhaust all the resources listed in the “Recruiting Skills” section to make yourself a top-tiered candidate. You want to market yourself as best as you can.

        I somewhat regret not going through this Work Values exercise when choosing my first full time job. I never realized how important certain qualities were until I spent some time reflecting on it (and some experience living out my preferences).

        For a sample model and writeup of ranked values here’s the one I wrote for my previous job search. I highly suggest reading the example doc, as some of the values on there were only discovered when I talked to other peers about what they look for. I didn’t realize I had some criteria until I had polled other friends.

        Another consideration you probably want to nail down in your doc is exactly what you want to learn. “Learning a lot” is not a meaningful objective as your learning goals will be entirely shaped by business needs, which often ends up in some weird, esoteric crannies. Do you want to do front-end, backend, machine learning, devops, product management, or something else entirely? If you leave those to chance, you might end up going down a career path that you’re not happy with. If you’re unsure, it’s also worth noting and trying to find jobs that resolve those questions as quickly as you can (e.g. working at startup to try many things, joining a rotational program, etc).

        There are a few write-ups that evaluate opportunities based mostly on business success. I personally like this one.


        Lead Generation
        Lead generation is knowing what great companies exist out there. I think the classic list to scrape is Wealthfront’s Career Launching Companies List. I think their evaluation criteria overlaps a lot with some of the values you seek in a company. It’s worth looking through all the companies, understanding what value their deliver, and what their engineering culture is like.

        If you’re still in school, asking your respected peers is also a great way to find interesting companies to join. Seeing where all the 10% of graduates join is a good proxy for know which companies are sought after.

        Angelist also has search criteria for you to find companies that match your interests. They’re much more focused on smaller companies and startups though.

        I’ve also scraped top VC firms to see what companies they’re funding. Andreessen Horowitz, Sequoia, and Kleiner Perkins Caufield Byers (KPCB) are great places to start scouting companies.

        If you’re looking for smaller companies (think <50 people), here’s my favorite technique for finding small startups to join: Go to LinkedIn, sign up for a $70/month premium membership (you’re only going to have it for a month or so), and then go to this custom search query I created. Although crude, it’s a search query that scouts out where all the smart people in the industry are working, filtering out all the trendy, big players. “Smart people” here being defined by people: 1. who attended a top tier CS school and 2. who worked a trendy company before. I found some strong candidates for startups to join by scouring the search results.

        Just because I know you’re lazy and probably not going to do it, and because it’s pretty easy for me to do publicize it, here’s my lead generation spreadsheet. YOUR SITUATION IS NOT THE SAME AS MINE. DO YOUR OWN RESEARCH.

        After you’ve generate more leads than you can handle in your schedule, you’ll need to start paring down the list. I found Glassdoor reviews to be a great site for getting a peek at company culture. If there are any red flags that stick out there, you can feel comfortable removing them from your lead generation spreadsheet.

        I found most of the signal that comes from preliminary research here to be very noisy. For example, it’s very hard to evaluate engineering culture by reading a company’s website, or understand how viable their business model is without someone internal showing you the numbers. Most of the information you’ll extract will actually be from the interview, but getting a sense of the company here is important to weed out any companies that have some immediate red flags.

        Finding the right channels to getting in touch with companies is a high leverage activity to maximize your chances of getting hired. Some of these channels also double as a lead generation tool too, so I would recommend jumping into some of these early.

        Here are the company sources from the most to least likely to land you a job.

        1. Referral
        2. TripleByte
        3. Hiring Platforms/Talent Portals
        4. Head hunters/Recruiters
        5. LinkedIn
        6. Cold email
        7. Applying online

        Referrals are probably your best bet to getting an interview at a company. A cold referral from someone whom you’ve met once at a party is still better than most of the other channels on the list.

        You can dig up referrals in surprisingly places. Searching on your LinkedIn and finding nearby connections is a great start. Otherwise even consider getting referred to places that you’re not super interested in. Sometimes your friends can see a valuable opportunity that you’re missing.

        Triplebyte deserves its own mention because of how pleasant and comprehensive I found the interview to be. Triplebyte is a hiring platform that acts as a gatekeeper to a bunch of other great companies. Triplebyte will give a comprehensive interview to you and (if you pass the interview) will be your promoter and introduce you to other companies. You skip all phone interviews onwards and go straight to the onsite. They have scheduled calls with me that asked me about what I look for in a company and matched me with companies they thought would fit my preferences.

        Triplebyte is a lot harder of an interview than most company phone screens (I think the statistic is that only 15% of applicants pass), so I would suggest acquiring some practice before going on Triplebyte. However, the company matching process can take some time so I wouldn’t delay scheduling your interview too late into your interview schedule. Scheduling your Triplebyte interview approximately 2.5 – 3 weeks before your expected onsites is most ideal.

        Hiring Platforms/Talent Portal
        Hiring platforms like Hired or AngelList’s A-List are a great way to increase your presence in the job market. Think of these platforms as scalable ways to get your resume out there. I would do the due diligence of comprehensively filling out each profile to maximize reach.

        A hidden gem is that most VC’s have talent portals too. Greylock has a talent network for both students and full time engineers. I know A16Z has one too, but requires some networking to get in touch with their recruiters. Literally search “[VC firm] talent” and try to join all the hiring platforms you can, either by applying online, reaching out to a recruiter there on LinkedIn, or attending their workshops/events.

        Headhunters and recruiters who act as a middleman can be great ways to get in touch with companies. Although I will say that 50 – 70% of these recruiters are a waste of your time, I’ve worked with a select few who have been phenomenal at matching me with companies I liked.

        Next time you receive a pesky email, I would suggest responding to the recruiter. My rule of thumb when dealing with recruiters is that if I ever felt like they aren’t listening to what I’m looking for, but instead pushing their clients on me, I would immediately drop them.

        LinkedIn is most likely going to be your largest source of incoming interview requests. There are going to be good requests and bad requests, but the most important thing for you to do right now is to go to LinkedIn’s career interests setting page, and check that you are indeed looking for a job. This switch will signal a miniature beacon to all the recruiters that you are indeed available, and since freshly available talent generally doesn’t stay in the market too long, there will be a lot of emails.

        Cold Email
        If there’s a company you’re particularly interested in and they’re not in any of the channels above, it’s worth writing an email to a hiring manager to signal your interest. It helps to tailor your email such that it doesn’t sound like a shotgun email.

        Online Application
        The very last resort. You should only use this option if you’ve exhausted all other options, don’t have a particularly strong interest, or don’t have enough time to write a cold email. Beware, response rates could be anywhere from 5 – 20%.

        Feel free to employ more than one channel for large companies. Sometimes you’ll slip through the cracks in one channel but get picked up in another. I’ve applied to companies online and never heard back from them until I reached out to them through a different channel.

        Recruiting Skills Read More


    Ultimate Productivity Hacking Guide (Part II): Time Management

    “It is not enough to be busy… The question is: What are we busy about?” – Henry David Thoreau

    Time management is process of aligning your time with your priorities. The strategies discussed in this guide are to address the following questions: How do you spend your time? Does the time you spend every align with your goals? The people who benefit the most from this section are people who have diverse set of goals and workloads and consistently need to allocate their time. Conversely, people whose goals are singular (e.g. I’m going to focus on taking care of my child) and have a strong conception of direction will benefit the least from this section.

    Planning Your Time

    Daily Planning
    Every day you should set aside 15 minutes at the start of your day to plan your day. Take out a post-it. First, figure out what obligations you have for the day. Do you have classes to attend? Friends to meet? Appointments to go to? It’s worth writing the ones that aren’t part of your regular schedule down. Then, figure out what you’re going to do for the day and assign an upper bound estimate on the amount of time you think it’ll take. You can comb through through your gathering points in the “Priority Management” section to figure out what you need to and want to do. Examples could be “Read chapter 5 of Intro to Probability (1.5 hrs)” or “Respond to recruiter emails (30 mins)”. Add up all the hours of your tasks and double check to make sure it doesn’t fill up more than 70% of your daytime outside of strict obligations. Now stick this post-it somewhere visible like your laptop, your planner, or your desk.

    Weekly Planning
    At the beginning of every week you should give yourself an overview of what larger tasks or goals you have. If you have a diverse workload or a diverse set of goals you generally should write these goals in a spreadsheet. If you have math homework due every week, you should make a note on how many hours you expect it to take. I also take tasks off my project management software and throw them onto this spreadsheet. I found it useful to write down what I expect to complete by the end of the week and make sure I’m not overloading myself.

    Example of my master calendar

    Once you take note of your weekly goals, you need to start blocking out time on your calendar to work on these tasks. I generally have a recurring weekly schedule, and just modify events as necessary at the end of the week. Here’s the calendar I have:

    Example Google Calendar

    It’s quite a lot to take in, and I’m not asking you to plan every hour of your life. I’m going to break down different milestones you’ll reach as you begin to start blocking out times for goals and obligations. Take your time to reach each milestone. It took me two whole years to go from the easy milestone to overkill mode.

    Easy: Put only obligations on your calendar. These are appointments you have, friends you promised not to flake out on, classes you need to attend. This prevents double booking your time with your obligations.
    Medium: Put on time blocks to work on goals with hard deadlines. These are homeworks you need to turn in, work projects you need to complete, tasks you just have to do.
    Hard: Put on time block to work on goals in general.
    Overkill: Not for the faint of heart — put on everything else: sleep, shower, mealtimes, transportation. This will give you insight into how you want to spend your time across all verticals of life.

    Let’s talk through the calendar methodology. Putting time on your calendar is a great way to visualize how you’re going to spend your time. It’s also a great litmus test to check whether or not you’re being overly demanding on yourself or trying to do too much in a week. Because you’re laying it all out on a calendar, you’re not double counting any time period and overcommitting your time.

    Here’s what the different colors mean:

    1. Sleep (Blue)
    2. FoShoTrans (Red/Pink): FoodShowerTransportation. This is the time you spend to get ready in morning, to get from place to place, to shower, and to eat. This can also be named “Essentials”.
    3. Break (Yellow): The time you spend resting or taking a break
    4. Exercise (Turquoise): Time spent exercising or healthy living
    5. Social (Orange): Time spent with friends or engaging in a social activity
    6. Work (Purple): Time spent working
    7. OutsideEd (Brown): Education I pursue outside of my usual obligations
    8. Blogging/Journaling (Grey): When I journal, blog, or self reflect.
    9. Read (Blue)
    10. Miscellaneous (Green): Miscellaneous tasks and obligations.

    Even something like rest or break time should be planned in. Break should let you rest and give you energy. If an activity like playing videos games doesn’t make you feel better after having done it, it doesn’t count as a restorative break (more on this later).

    Every morning you’re going to go through all the tasks on your to-do list and make sure they have corresponding events on your calendar. If a task takes <5 mins long, it’s better to do it right now and not have to bounce mental reminders in your head.

    If your task takes from 5 – 15 minutes, then group them together under an event called “Personal Errands”. These tend to more shallow and mindless, and I would put the event at some time which you are not at your peak energy level, like in the evenings.

    Everything else goes on your calendar as individual blocks/events. If they aren’t on your calendar, you’re not being intentional about how you’re going to spend your time. If you don’t have space on your calendar, then you’re asking too much of yourself, and should review the “Priority Management” section of the guide.

    Why it Works
    A calendaring system reduces the cognitive load with planning. If I didn’t have my calendaring and task tracking software, I would have to keep all the information in my head. “What should I be doing right now?” “Should I study or work on interviewing?” “Do I have the time to go to Jay’s party or would that ruin my morning run the next day.” Those are the dialogues that happen in my head ALL THE TIME  if I don’t set aside 30 minutes each week to just lay out all my time visually. Those thoughts are extremely draining, and when you have to overcome the issue of “what should I do?” before starting to work, you’re going be more likely to make poor decisions (I’m looking at you, Facebook, Instagram, Reddit).

    Putting everything on a calendar (as opposed to say, a planner) also forces you to specifically allocate time towards your goals, values, and obligations so you don’t double count your hours spent. Time is your most finite resource, so it makes sense to set aside time to figure out how you’re going to spend it wisely, rather than haphazardly deciding on the whim.

    When you follow the system, you end up consolidating a lot of gathering points and merge it into one place. Instead of checking 20 places to figure out what you need to do, you just check 1. A calendaring system can be used to consolidate gathering points, like gleaning emails to throw to-do’s on your calendar or to copy homework due dates from your classroom website.

    “What if you go off track?”
    Going off track of your schedule is not a crime. It’s more important to notice that you’ve gone off track than to judge that you’ve gone off track. Judging your behavior at this point only brings about negative emotions, but the noticing helps collect useful information to help us understand how we can do better next time.

    I think of my calendar less as a behavior enforcer, and more as a ledger of intentions. Without it, I simply wouldn’t know what to do with my life, and I’ll probably meander aimlessly with a constant fear of forgetting something important.

    I actually change my schedule frequently, maybe 3 – 5 times a day, to account for any possible changes. Sometimes it’s a disruption, or a task that took too long. Other times it’s a riveting conversation with a friend that went over an allotted time. I don’t see deviations of my schedule as transgressions. As I like to say, it’s easier to change plans than to make them, so plan first and change if needed. Planning my day forces me to be more mindful about how I spend my time, which doesn’t leave a lot of room for mindless activities.

    Planning Tips

    Potpourri of tips I’ve had working with a schedule for 7 years:

  • Avoid doing any mentally straining work for more than 1 – 2 hour chunks at a time and more than 5 – 6 hours a day. Despite my best efforts, I can probably focus for at most 3 hours before needing some kind of break.
  • Do the hardest things first: Willpower tends to decline as your day progresses. Some tasks become extremely difficult as you reach the akrasia zone of 2 – 4 hours before their bedtime. Because of that, I try to schedule the most cognitively or energy demanding things in the morning and menial tasks before bed.
  • Try to fit your habits in the morning: Especially post-graduation, most of your social time will occur in the evening. It’s hard to uphold a workout routine if you’re friends with people who make plans on the day of. One way to avoid this pitfall of making hard choices between your habits and your friends is to move your habitual stuff to the morning, where people have less of a chance to interfere or interrupt your schedule.
  • Find ways to double up your time: You can save some time by doing two things at once. For example, reading a book during your commute saves you from spending all your time commuting. Eating a meal with friends can fulfill your social and dietary needs. Just be careful not to mix two cognitively demanding tasks, and not to give up break time in order to squeeze in more activities.
  • Set plans are about 1.25-2x the cost of normal times: Any set plans that cannot be moved (like any appointments, obligations, or engagements) should be treated as costing about 1.5 to 2 times the amount of the time they take. For example, if I wake up earlier than expected for a 9am coffee with a friend, I’m wouldn’t be able to adjust my schedule nor squeeze in something other activity before my engagement. Concrete plans cannot be moved and I find that the flexibility of the schedule I lose is approximately 50 – 100% of the time of the obligation. This means that I generally treat concrete plans as costing more and try to do more things that are flexible, like running by myself over joining an intramural sports league.
  • Identify high variability factors that can throw off your schedule: My biggest hidden variable is sleep. My sleep duration varies quite highly, and I have to adjust my schedule accordingly. I try to avoid concrete plans in the morning to avoid my sleep from clashing with my other plans.
  • Read More


    Ultimate Productivity Hacking Guide V2 (Part I): Intro & Priority Management

    Note: I can’t believe it’s been 5 years since I first wrote my productivity hacking guide. I was a freshman at Berkeley when I published that article. Now I work full-time and still juggling various aspects of my life. A lot of productivity methodology has changed, and yet a lot has stayed the same. I’m rewriting this guide from scratch, and organizing the information in a more referential manner. That way, people can reference material that’s relevant to them and ignore everything else. I’m also releasing this guide in 5 parts, as not to overwhelm people too quickly. Read More


    Thoughts on Downtime

    Lately I’ve been needing more downtime. Downtime for me are activities that are low stimulation activities. Downtime include stretching, spacing out, closing my eyes (whether or not falling asleep), going on walks, and doing household chores. Downtime (for me) does not include playing video games, watching television, or browsing Reddit. As little as 15 minutes of downtime correlates strongly with an increase in my subjective well being.

    The concept of downtime is a relatively new concept to me. I originally had a strong attitude against downtime. I didn’t believe in deep rest, and felt like doing hard work was sustainable. After going through 2 burnouts in my life (once in college and another during work), I’m willing to soften my claim now.

    One discovery that overturned my opinion on downtime was realizing that burnout is a well defined and studied phenomenon. When you’re burnt out, a series of physiological effects occur that make you less effective of a person. You’re less likely to respond positively to stimuli, you’re more stressed, and burnout affects sleep. Being burnt out is a bad place to be, and recovery can take months. Months of unproductive work is not worth squeezing out the extra 10% of efficiency in your day-to-day job.

    I also used to think that downtime was superfluous because of the high variance of what people consider downtime. The reasoning goes that if different people have different notions of downtime, then if I could convince myself that a productive activity is actually downtime, I would be able to derive the upsides of downtime and the productive output of the activity.

    Despite trying to adopt that attitude to the things I wanted to like, I’ve had very limited success with incorporating my work into my downtime. High variance of notions of downtime implying flexibility of each individual’s notion of downtime is a non-sequitur.

    Being more experienced with downtime now, here are some subjective descriptions of what MY downtime feels like:

  • Freeform day-dreaming. Ability for mind to wander about ideas.
  • Light sleep. Similar to the description of the onset of sleep, it feels like my sympathetic nervous system is calming down and negative thoughts no longer has negative physiological responses.
  • Deafening of consciousness or focus.
  • Hard focus for long periods of time produces a sense of “congestion”. I’m able to accurately assess this by a simple working memory task. Usually by the time my brain is very congested, holding 3 things in working memory becomes a serious chore. Downtime feels like a drainage of that congestion.
  • Decompressing the memories and information in my prefrontal cortex/hippocampus.
  • Read More


    Keyboard Customizations

    Something that you spend a lot of time doing benefits from even the smallest marginal efficiency. Sleep is a good example. Investing in good quality sleep pays multiple folds when you spend more a third of your time sleeping. Similarly, when your full time job involves sitting in front of a computer and typing, then you’re likely to experience death by a thousand cuts when you perform the same manual tasks over and over again. I’ve developed some useful keyboard customizations that I’m briefly going to introduce. I use laptops from the macOS ecosystem, so I apologize for those PC and Linux fans who are unable to follow along.

    The biggest epiphany I’ve realize comes from when I accidentally press the option key. As few may know, pressing the option key and any alphanumeric key results in a special character. Do you know which keys produce which characters? Neither do I, and nor do I ever use that feature. Whenever I have to search up a special character, I just end up copying the unicode symbol from the search engine instead of learning to do it myself. Understanding that I pretty much don’t care about any option + X combination, I can freely override any of those combinations.

    Searching for software for remapping keyboard layouts, I came across Karabiner for OSX. I really enjoyed the reliability of the software, and it has served me well so far. So I got to tinkering what customizations worked for me.

    For me the biggest pet peeve was having to use the arrow keys. Whenever I’m typing something and want to navigate my focus to a different part of the text, I have to shift my right hand to the bottom right by 4 inches in order to reach the arrow keys. After moving to the location I want, I have to shift my right hand back to its original typing position to resume typing. It becomes really annoying after performing this maneuver hundreds of times a day.

    So the first change I made was remapping option + IJKL to the arrow keys. Now whenever I need to move my cursor around I don’t have to move my right hand 4 inches to the bottom right to adjust my cursor. That’s 11 yards fewer than your hands have to travel each day!

    There are some great side effects from remapping this. For example, now that option + L = right, ctrl + option + L now equals ctrl + right, and that shortcut moves you one space to the right. So now you can easily switch macOS spaces left, right, up, and down. You can also do cmd + option + L = cmd + right, which lets you go back or forwards on a web page. What a joy to not have to move your right hand 4 in to the bottom right.

    I found my next optimization while spending some time working in Sublime Text, a code editor. I tend to split window into multiple panes so I can cross reference files from one another. However, I found it annoying when I want to switch my typing cursor from one pane to another. Usually this involved moving my mouse to select the pane I want, or the sublime shortcuts ctrl + 12345. The shortcuts are a mess, since when you move your left pinky to the bottom left to hit the ctrl key, it becomes quite a reach for your other fingers to reach the numbers to select the panes, so I thought of optimizing that. I decided to remap option + m, option + comma, option + period, and option + slash to ctrl + 1234. This way if I can hold down left option with my left hand, and slightly curl my right hand to select which pane I want.

    It was also annoying when using split view (putting two applications side-by-side) and having to switch between them. You could do cmd + tab to switch between applications, but that doesn’t work when you want to switch between windows of the same applications, like if I’m working between two repositories of sublime text of seeing two windows of my Chrome web browser.

    Mac has a native shortcut to move to the next active window, but it’s at an inconvenient place at ctrl + F4. I remapped that shortcut to option + H so that I can navigate across my entire computer while holding down the option key. I can switch spaces, switch focus within a space, switch panel views all on my keyboard.

    It says option+D here because I use Dvorak and the H key maps to D

    One particularly tricky thing to write was the option + cmd + left shortcut. On Chrome, this lets you switch to the tabs to the left and right of your current tab, which I found pretty useful instead of having to memorize the tab indices to select the tab you want. However this shortcut is undoable with the option + IJKL setup since an extra option key is needed to hit this shortcut. I had to separately remap other keys to make this setup work, specifically I remapped cmd + option + U and cmd + option + O to the tab switching shortcut.

    Something that particularly bothered me when I received my 2017 Macbook Pro was the touch bar. There’s just no tactile response with the escape key. The escape key is way more useful if it were just more accessible. For example, if you’re trying to scroll through the web page with your arrow keys, but find that the focus is placed on one of the text boxes, you can move your mouse to click outside the text input, or you could press escape. The problem is when you use your option-based arrow keys, holding down option, then pressing escape, then going back to option, is hard. So I remapped option + semicolon to escape, and now I can hold down left-option, then escape my focus, scroll around a view, and then switch panes!

    Similarly, on the top right hand corner we have the delete key. Reaching for that delete key is annoying that I remapped my caps lock key to delete. I also added a mod such that holding shift while pressing delete will do forward deletes.

    I added some other minor stuff too, like personally swapping semicolon with colon. I have my Karabiner rules posted here, which you can copy.

    If you want to go really hardcore with improving your keyboard ergonomics, consider learning Dvorak. My favorite dvorak learning resource is here.

    Have any interesting keyboard shortcuts? I would love to hear about them. Let me know either in the comments or through my email :)


    Works on Commodity Hardware

    There are design patterns, algorithms, or techniques that are highly dependent on the agents that execute those patterns. The recent boom in neural nets in artificial intelligence was only enabled by the rise of fast GPU’s that run the back propagation algorithms. Sophisticated breakthroughs in sports have been enabled by more performant athletes who can execute complex strategies. Without some requirements on the executors, none of these things would work.

    There is a design pattern that is highly agnostic to the executors, yet produce meaningful or effective results. This is particularly interesting to me because by working well DESPITE the dependencies, it gives more robustness to the design pattern itself.

    I first discovered this pattern when reading the DynamoDB paper, which is a computer science paper that boasts incredible database performance by organizing machines in a particular topology and having them talk to each other in a special way. One of DynamoDB’s biggest selling point was that you didn’t have to buy specialized hardware to achieve a highly available and consistent data store. As the original paper phrases it, “Dynamo is run on standard commodity hardware components that have far less I/O throughput than high-end enterprise servers.” This was a big deal when companies had to purchase specialized hardware in order to achieve the durability and availability they wanted. Not with DynamoDB. The design pattern of how the different machines operate work just as well as the specialized hardware not running the database software. Ever since reading the original paper, every time I recognize a similar pattern, I say “this works on commodity hardware.”


    One of McDonald’s breakthrough innovation in the rise of business franchises is their ability to produce consistent quality burgers and service through untrained labor. When you want to open a normal restaurant, you often have to hire specialized workforce like a trained chef or an accountant. Not McDonald’s. With their trademarked business practices that they share with anyone looking to start a branch of McDonald’s, they can train untrained labor to produce very, very consistent meals and restaurant experience.

    It was a revelation to me that McDonald’s is in the business of selling business blueprints. McDonald’s convinces entrepreneurs that starting a McDonald’s is the most profitable business they can start. With minimal skill and labor, McDonald’s Corporation provides all the support, guidance, and materials you need to successfully run your own branch of McDonald’s. You don’t need any special personnel, just someone who graduated from their local community college and some gumption to take on leading the business.


    I’ve been asked a few times if I ever want to be a manager. I reply that I’m a good peacetime manager, but when shit hits the fan, I don’t know if I’ll be able to step up. I also note that I really like working with competent people and can get things going if everyone likes each other.

    That’s a difficult ask, considering that most managers don’t hire their engineers, they’re more likely to inherit them. Managers also have very little say on who gets along with whom or who is a good engineer. A good manager build products and manages the team without the need to have a highly specialized or educated team. They tend to produce those players instead of acquiring them. Good managers enable mediocre engineers to produce stellar results. Good management styles works on commodity engineers.


    If you ever coached young athletes like I did, you’ll understand how to work with the athletic limitations of your team. In soccer, for example, asking your 12 year old players to make shots outside the penalty box is a no-go when they can’t even kick a ball that far. Developing a strategy becomes highly dependent on the executors of that strategy, and when you don’t have those executors, you have to develop strategies that work on commodity players. Some of the best coaches I’ve seen in the community soccer league are ingenious coaches who develop strategies that you won’t see in the World Cup, but works tremendously on 12-year-olds who only show up to practice twice a week. Dumb stuff like “kick the ball above the goalie because he hasn’t hit his growth spurt yet” sounds really dumb and slightly mean, but I’ve heard similar statements on the playing field before.

    Also literally watch any sports movie. Coaching’s all about playing to each players’ strength.


    There was a case study surrounding an intervention to reduce child mortality in rural Africa. Being born prematurely is one of the biggest sources of premature deaths. One way to save these babies is to keep them in an incubator. Western hospitals would sometimes donate these incubators to African hospitals that end up being neglected because it required a skilled technician to fix any issues.

    The world of philanthropy recognizes executor limitations and celebrates the frugality of things to work on commodity hardware. Take this water generator for example:

    Or this $1 microscope. Often these philanthropic projects boast the effectiveness of certain techniques without caring about the materials of the labor required to produce the results.


    Hopefully your tour of some design patterns will help you recognize robust systems that are agnostic to the executors of the pattern. This is an interesting quality to discuss when making design or implementation choices, as it can make or break you in certain cases.


    Lessons From Improv

    2017 was a rough social year for me. I was having a hard time connecting with new people I met and making new friends. I attended a lot of social gatherings over the weekends with the mindset of talking and interacting with people in more fun and meaningful ways, but I always fell flat of what I set out to accomplish.

    Social skills are hard to come by because if you’re bad at socializing, you’ll be conditioned to not like socializing. Not enjoying socializing in turn makes you worse at socializing, and you have a vicious cycle. I felt trapped in this vicious cycle since my self-conscious attitude towards my social skills would pop out in a middle of a conversation while I socially implode mid sentence.

    I didn’t feel like I made much progress in 2017, but I was eager to improve. Lamenting my problem to some friends, they recommended that I should try improv. I emotionally flinched at the idea, and came up with an excuse not to sign up for a class. When given more time to think about my social issues, I realized that I needed systematic ways to overcome my fears, and improv was a good systematic way to set a regular schedule to go outside my comfort zone

    So I signed up for an improv class. That decision was one of the best decisions I’ve made in 2018. I wanted to highlight some of the takeaways I had from the class that carried through to my day-to-day interactions.

    Not all Questions are Created Equal

    Although in many conversational skill books recommend asking questions as a way to show interest in other people, in improv starting a scene with a question is generally a no-no because it puts the burden of setting up a scene on your partner. “What are you doing?” doesn’t contribute as much to the scene as “I see you’re rebuilding your computer again.” A good initiator plants an improv seed and invites the other players to build on the scene.

    Not all questions are created equal. From my work I am trained to ask specific questions to get specific answers, but when I carry that conversational style to weekend parties, I find that asking those questions strongly backfires. I have had people tell me that talking to me felt like being in an interview. Asking specific questions only gives your partner a small set of responses to choose from, sometimes only one. For example, if I ask, “what do you do for a living?” There is only one answer my conversation partner can say. These answers are usually so automatic and devoid of individual expression that I missed an opportunity to connect with this person.

    The only free outs in these questions are when they say the an answer you like. For example, if you do finance, and they do finance too, then you guys can continue your conversations there. If they don’t work in finance, then you’re out of luck and have to talk about something else. That’s why sometimes these questions are called “qualifier questions.” Your connection with this person depends on the answer he/she gives, and people don’t like having the burden of having to impress or interest you.

    Being a person of varied interest helps only to the extent of expanding your preferred answer set, but even a “me too” itself is not sufficient to move the rapport-needle forward. It’s a false assumption that rapport-building has to come from common interest.

    A good conversation avoids canned messages and invites your partner to express themselves. An open ended question is an easy way that’s taught to elicit that kind of behavior, but it doesn’t have to be a question that invites the other person to join in on a conversation. It could be a compliment, an observation, or a commentary. The important thing is to invite people to be able to freely express themselves without giving them the entire burden of expressing themselves.

    The Most Important Part of Improv is the Relationship

    Relationship is a conflated word here. I will use “relationship” as to describe how people feel/relate to one other. “Relationship” is also often used to describe formal interactions, independent of how the individuals in that relationship feel. I call that type of relationship “roles”.

    There was an activity we did in class that involved two people going onstage and assigned roles (e.g. brothers in law). Then they had to start a conversation and they could talk about anything. One pair of students were assigned the student/teacher role, and that scene was very difficult to play. The problem a student/teacher dynamic was that people were too eager to play the role and forget about the relationship. The scene quickly dove into the teacher giving the student advice and the student passively listening. People playing on their roles made the scene less about the people and more about the role.

    I found similar problems play out when I feel assigned a particular role. For example, in the few mentorship programs I was a part of, I often found myself too mentally grooved into my role as a mentor to develop a relationship with my mentee. I would avoid showing weaknesses to my mentee, gave advice that wasn’t asked for, or adhere to a strictly professional manner. Not seeing the human on the other side of the table resulted in a lack of rapport and chemistry. Less chemistry correlates with less trust to seek out my help when they ran into issues.

    Similarly, even though I’m out of college, I catch myself often giving advice to college students that I meet, even if they don’t ask for it.

    In improv scenes, it’s wise to quickly establish the relationship as a way of how people relate to each other. Do you and your scene partner hate each other, love each other, envy each other? When people can’t figure out your relationship, they can’t have expectations about how you should behave. Similarly, it’s important to establish a relationship when meeting someone new for the first time. Without some way for you to emotionally relate to one another, the natural response is for people to not care.

    Act Like You’ve Known Each Other for at Least 6 Months

    It’s a lot of drudgery of asking people for names, occupations, et cetera. Improv scene start with the assumption that people have at least known each other for 6 months.

    I find that interacting with people as if you’ve known them for a while really helps build rapport quickly. When I proceed too cautiously, I tend to ask more questions and try to figure people out. However, when I act like I’ve known people for longer, I find myself avoiding the prerequisite small talk and jump straight into something interesting. Most people respond reciprocally when you treat them like a friend you already know.

    Yes And, If Then

    The biggest tenets of improv are arguably defined by two phrases “Yes, And” and “If, Then”. “Yes And” references the collaborative effort between improv members to build a scene. It’s a positivity mantra that sets the who scene open to all possibilities, because every agrees that they’re going to build something together and that they value everyone’s contributions to the scene. When you adopt a “Yes, And” attitude, you’ll find yourself more agreeable, less judgmental, and more likely to carry on a relationship with people.

    “If, Then” is what gives the story consistency and depth. Improv scenes that are as random as a dice roll are as fun as a dice roll, so “if, then” attitudes help members find their common ground of scene direction that they want to take. An improv scene that is a bunch of If’s and no Then’s is just a bunch of unrelated one liners. By connecting the statements together through “if-then’s” you begin building a beautiful story.

    Why You Should Consider Taking Improv

    I think one of my favorite moments in my improv class was when I was really struggling to get through a scene in class. I sat in my chair dreading for my turn to go on stage to perform *that*. It wasn’t me. I’ve never done that, and I’ve never acted that way before.

    At some point it was my turn. I got up, word-vomited on stage, and sat back down. I still felt afraid at some point, but at the same time I just *knew* that I was in no harm. Fears play out in my head in the form of mental scenarios, like falling off a cliff, being made fun of by people, or getting hit by a car. But this fear that I feel now is different. I didn’t think anyone was going to judge me or look down on me after my performance. I was not in any physical harm. When I took away all the different scenarios that fear manifests in my head, all I had left was the fear itself. This raw fear had no “worst-case scenario” attached to it. I just observed it just like a biologist would observe a physiological response from a wild animal. When I realized I was able to disassociate myself from my fears, I felt much more at ease.

    The positivity that is nurtured in the improv classroom is amazing. Positivity and safe space has been so thoroughly enforced and demonstrated, even in the most trying of times is remarkable and admirable. After that incident I felt more comfortable around my fears. No, I haven’t full overcome my stage fright, but I feel much more comfortable tackling those fears in a safe environment.

    I would recommend improv to anyone who feels like they need to work on their social skills. I’ve only been highlighting the benefits of improv with respect to my social life, but even if I were to ignore all the social upsides of taking the class, I have to admit that improv is pretty darn fun.


    The Death of Semantics

    Words decay as soon as they are invented. That’s because words and language are a distributed protocol to tie semantics (meanings) to representation (words). With so many people trying to communicate with each other, the distribution of these protocol are subject to chinese whispers and decay. This essay traces how words might change for the worse.

    Stage 1: Neologism

    The birth of words begins when there is a semantic (meaning) without a representation (word), so people invent a new word to “point” at the semantics. “Google” was a favorite modern word officially added into the English dictionary in 2006. It was a new verb that was used to describe the searching of information on the internet because no previous word existed to describe what the word “google” described. Words are saved because no one ever has to say “Why don’t you search it on the internet?” ever again. We say “Why don’t you google it?”. All is good.

    Stage 2: Semantic Diffusion

    Often times the popularization of a word weakens the definition because the word is no longer used by the original people and often used with a weaker semantic. This is called semantic diffusion, coined by Martin Fowler.

    “Allergy” was originally used to describe a medical condition pertaining to the hypersensitivity of the immune system to foreign substances, but when popularized, it transformed into a weakened definition to include the condition in which includes the hypersensitivity of foreign substance not pertaining to the immune system. For example people would often say people who have G6PD are allergic to fava beans, when in reality the mechanic related to the sensitivity to fava beans is not resulting from an autoimmune disorder, but rather an enzyme deficiency.

    Weakened definitions are bad because words lose their original precision of semantics, and the margin of imprecision can lead to errors and confusion. Doctors who hear the phrase “X is allergic to Y” can no longer safely assume the underlying cause is an autoimmune disorder.

    Stage 3: Overloading

    When a word’s definition weakens to the point that it covers too much, the semantics of the word begins to split while the representation of the word stays the same. The result of the process is an overloaded word. An overloaded word is dangerous to use because when used in discussion, different people might assume different definitions.

    “Fascism” used to describe a collection of beliefs supporting a dictator in power forcibly suppressing opposition, regimenting commerce and industry, and promoting nationalism and racism. When the terminology became popular in modern politics, the term has weakened its definition to cover a set of unpopular right-wing beliefs.

    Since the original semantics of “fascism” has receded in everyday conversations and the new weakened definition has grown in popularity to describe a new right winged political party, the word has been “hijacked” to encompass this new meaning without fully deprecating the original use case. Now, “fascist” is being used to describe right-wing extremists, who only hold a subset of the beliefs from the original definition. It’s a great public relations move to overload an already emotionally-charged word, but I believe adds more confusion than clarity around the public debate surrounding right-wing extremists, and the manipulation of terminology can also be used against our own beliefs, as described in the noncentral fallacy.

    “If a tree falls in a forest, and no one is around to hear it, does it make a sound?” The paradox and argument embodied in this koan can be summarized by pointing at the overloaded word “sound.” If you substitute the definition of the word for the word, then you have your answer.

    “If a tree falls in a forest, and there’s no one around to hear it, does it produce a sensation produced by stimulation of the organs of hearing by vibrations transmitted through the air or other medium?” No.

    “If a tree falls in a forest, and there’s no one around to hear it, does it produce mechanical vibrations transmitted through an elastic medium, traveling in air at a speed of approximately 1087 feet (331 meters) per second at sea level?” Yes.

    A key understanding is that overloaded words are semantically diffused words that have begun to contain non-overlapping definitions. A diffused word can contain overlapping definitions that are weakened based on the use of the word. “Evolution” is arguably an example of a semantically diffused word that hasn’t

    Even in self-reflection, overloaded words are grimy nooks that can hold contradictory thoughts. In some instances, I would think I “love” someone when what I was really just physically attracted to them. Some people would say they “love” someone but their significant other wouldn’t move in with them, so it’s not love. I would argue the word “love” is one of the most problematic overloaded word because everyone has their own definition of the word but we all think “love” is supposed to be one universal concept. This expectation vs reality gap is a large portion of relationship issues and debates about what “love” is or isn’t.

    There’s a running but true joke in philosophy that half of philosophy is arguing about definitions. Overloaded words is the root cause for these debates because it’s the philosopher’s jobs to try to sharpen the precision of words. Often, in order to carry out conversations NOT about definitions, philosophers have to avoid overloaded words to reach the same level of precision, which, in turn, results in really long philosophy essays.

    Stage 4: Death

    “Literally” literally has no meaning. The death of semantics occurs when definitions exist that contradict another, giving the original word no meaning. A word could mean definition A or definition B, but not never both. I literally don’t know what “literally” means when someone says “literally.” One of the definition of literally is that it is not literally true.

    “Biweekly” is another example that causes confusion, since it can both mean “twice a week” and “once every two weeks.” Saying “let’s meet biweekly” is no longer informative, and people have to substitute the definition for the word, often saying “let’s meet twice a week” or “let’s meet once every two weeks.”


    Be careful of what words you use, because if you aren’t using words correctly, you can contribute to semantic diffusion, overloaded words, and even the death of semantics.