Category: Personal Development

  • 20s for education, 30s for experience, 40s for career.

    20s for education, 30s for experience, 40s for career.

    In my mid twenties, I was blessed to receive some of the best career, and quite frankly, life advice. During that period of my life, I was working as a director of technology, leading a small group of engineers. But I was getting ready to throw in the towel. I lacked both the experience and confidence needed. So I reached out to my friend Brian, asking him if he knew anyone who could help me with “executive coaching”. Thankfully, Brian connected me with a C level executive: let’s call him Phil (that’s actually his name).

    Prod, provoke, encourage

    When I met Phil at the Jerry’s Deli located in the valley, one of the first things he flat out told me was that executive coaching is bullshit. Despite that belief, he essentially coached me and gave me some sage advice that now I get to pass on.

    Seth Godin once stated that “About six times in my life, I have met somebody, who, in the moment, prodded me, provoked me, encouraged me, and something came out on the other side”.

    Phil is one of those 6 people in my life.

    The best career and life advice

    The sage advice is simple and sounds similar to Nic Haralambous’s advice “Plan in decades. Think in years. Work in months. Live in days”. But Phil’s advice offers a different perspective, another angle:

    20s for education. 30s for experience. 40s for career

    This advice stuck with me and helps me (re) calibrate my goals and values. Of course, life takes its own twists and turns. But as the Dwight Eisenhower said “Plans are worthless, but planning is everything”

    What does that look like in practice?

    20s for education is NOT synonymous with school. It really means soaking up as much as possible. This learning might take place in school but not exclusively. Because learning can happen anywhere and everywhere.

    Fail and fail a lot.

    For us tech folks, this might be learning a new programming language, dissecting the ins and outs of your compiler, picking up marketing or public speaking skills.

    The list goes on and on.

    30s for experience. This is where the rubber meets the road. Where theory and practice intersect. This may mean you want to switch roles (like how I switched from being a systems engineer to a software developer) or switch companies so that you can apply all that hard earned knowledge that you acquired in your twenties.

    Finally, 30s will feed into your 40s, where you get to establish your career. Maybe working for a small company, where you get to wear a bunch of hats. Maybe for a large corporation, where you hone in or specialize in a particular niche. Or maybe as an entrepreneur, building your own product or service.

    Now what?

    I’m actually revisiting these words of wisdom. Right now. For the last six months or so, I’ve been overly focused on an upcoming promotion from a mid to senior level engineer at Amazon. Instead of chasing this new title — cause that’s all it really is — I’d rather redirect my focus and make mistakes, stretch myself and find opportunities that put me in a uncomfortable (but growth inducing) experiences.

  • Don’t break the (writing) chain … has been broken

    Don’t break the (writing) chain … has been broken

    This week, my cumulative “write every day” streak has been broken (almost 2 months of consistent writing every day), thanks to one of the roughest weeks at work. I normally start every day off with some light blogging — even if its for 5 or 10 minutes — but almost every day this week I was prematurely woken up due to my pager alarming me out of bed. So honestly, I couldn’t be more happier that it’s Friday (TGIF, for real) even though I have 2 more days (over the weekend) of being on call; I haven’t felt this physically and mentally and emotionally exhausted in a long time. Every time I get paged out of bed I’m forced to get my mental gears in motion and it’s very difficult switch off, making it nearly impossible to go back to sleep for a nap.

    So the days have been … very long.

    Oh well.

    So now, it’s time to reset the “cumulative days” of writing counter

  • Distancing oneself from a difficult problem

    Distancing oneself from a difficult problem

    I fixed a silly bug just now and wrote working code that can pin multiple virtual CPUs to the physical CPUs.

    Identifying the bug in my code was another classic example of how I needed to distance myself from the problem. Instead of staying up late into the night (late is now 09:30 pm on a weekday) and fixating on debugging the code, I slammed my laptop lid shut and whispered under my breath that I would revisit the problem in the early morning, reassuring myself that stepping away from the problem (in this case, sleeping on it) is often the best — and sometimes only — way to solve a difficult problem.

    There have been countless number of times where I would fixate on a particular piece of code for hours, reading and rereading every line in code, stepping through each instruction with the debugger, only to grow more frustrated that my perseverance failed to pay off. Only when I let the problem simmer in the back of my brain and return to the screen with a fresh new pair of eyes am I able to fix the problem.

    How about you? Do you find distancing yourself from a hard or difficult problem is sometimes the only way to solve it?

    Pnning virtual CPU to physical CPU
  • A snapshot of my understanding before beginning project 1 (scheduler, memory coordinator)

    A snapshot of my understanding before beginning project 1 (scheduler, memory coordinator)

    Project 1 was released last evening at 08:59 PM PST and this morning, I decided to start on the project by reading through the overview and get the lay of the land. For this project, we’ll need to deliver to operating system components: a scheduler and a memory coordinator (not even sure what that means exactly).

    So what I’m doing as part of this post is just taking a snapshot of the questions I have and topics I do not understand, topics that I’ll probably understand in much more depth as the project progresses. More often than not, I often dismissive of all the work I put in over the semester and this post is one way to honor the time and commitment.

    Overall, this project’s difficulty sits in the right place — not too hard but not too easy. The sweet spot for Deliberate Practice.

    Questions I have

    • What algorithm should I implement for my scheduler?
    • What algorithms fit the needs for this project
    • What the heck is a memory coordinator?
    • Why do we have a memory coordinator? What’s it purpose?
    • How do you measure the success of a memory coordinator?
    • How do I use libvrt library?
    • What is QEMU?
    • Where does the scheduler sit in relationship to the operating system?
    • How will I get the hypervisor to invoke my scheduler versus another scheduler?

    Project Requirements

    • You need to implement two separate C programs, one for vCPU scheduler (vcpu_scheduler.c) and another for memory coordinator (memory_coordinator.c)

    References

    1. Introduction to QEMU
  • A No-Excuses Guide to Blogging – Excuse #5 – “I don’t want to be wrong”

    Many people (including myself) fear that we will be perceived as a fool if we publish on a post blog that contains a mistake, a public mistake. Nobody wants to be humiliated publicly. This fear is encapsulated inside of a quote that Sacha shares:

    “Better to remain silent and be thought a fool than to speak and remove all doubt.”

    But like Sacha, I’d rather know when I’m being a fool. At work, I never shy away from asking “dumb questions”. I’ve come to realize that there’s normally at least one other person who has the same question but they often shy away from asking it for fear of looking stupid. I’ve been that person and I later kick myself in my butt for not speaking up.

    If you don’t put your thoughts into words — verbally or written — then its very easy to convince yourself that you understand something, when you really don’t. So many times in both my career and personal life I thought I understood some topic but when I started forming those thoughts into my own words, I realized I had gaping holes in my understanding. For example, my co-worker asked how and why we prefetch in our code base, and when I started explaining, I realized I had to refresh my memory on the cost of certain instructions and CPU pipelining.

    In summary, do yourself a favor and when you are learning something, try and explain it someone. You might discover gaps in your understand. And that’s perfectly okay because your writing becomes a “history of change and learning”. This allows us to take a step back and honor our progress and allow us to remember our mistakes and lessons learned along the way.

    References

    Chua, Sacha. 2014. A No-Excuses Guide to Blogging.

  • Waiting for one day …

    “If you want to be successful, find out what the price is and then pay it.”

    Scott Adams

    I agree with that Scott Adams wholeheartedly. I also think this rule can be more broadly applied: “If you want something — anything — find out what the price is and then pay it.”

    This quote reminds me of a story that my therapist recently shared with me. During this Covid-19 shelter in place, he’s participating in an online workshop lead by a poet named David Whyte. During the most recent workshop, one of of the other students in the program shared their life long dream: becoming an anthropologist. It’s something they always dreamed of but before they make that giant leap, they are first going to build a financial foundation and work in tech for another 8 years.

    David Whyte’s response? “You’re probably not going to become an anthropologist.” Ouch — brutal honesty. But David Whyte softens the below and elaborates, stating that when we do something on a daily basis, we assume that identity and that activity — in this case being a tech worker — becomes part of our fabric. He’s right.

    This short story struck a chord with me. And over the last couple days, I’ve been reflecting on my own one day dreams and aspirations, askingmyself what are some things in my life that I’ve been wanting to do but have been waiting for something — something in the distant future, only after I do x and do y.

    And the first thing that surfaced was writing. Writing on my blog. I used to write much more frequently but every since I started my masters program in computer science, I’ve pretty much abandoned writing all together convincing myself that I have zero time to commit to writing. That’s nonsense.

    So instead of waiting to graduate from the program — which is another 1.5 years — I’m going to chip away at my writing. Every day. Even if it’s for 5 minutes. Even if it’s just collecting field stones or existing content. Whatever it is, I’m making tiny incremental progress: and I’m happy with that. Little wins.

    Now I want to turn the table and ask you if there is anything you want to do one day? Is there something you are waiting for? Or waiting for someone to give you their approval? Or for the stars to align?

  • Almost half way through M.S. in Computer Science

    I’m almost half way through the OMSCS (online masters in computer science), last week marking the end Spring 2020, my third term in the program. And although I’m looking forward to taking compilers next semester, my mind often wanders into the distant future , my mind fast forwarding to the time in which I’ll be graduating from the program. So, I stitched together a line graph that includes the classes, breaking down each term along with the courses that I’ve already taken (and will take). Here’s what it looks like:

    As you can see from the above graph, I’ve historically taken one class per semester (except for the previous semester, when I simultaneously took information security and computer networks simultaneously); taking one class per semester takes the middle path, allowing me to balance school and work and family and other obligations and the millions of my other hobbies (e.g. singing, guitar). So at this current rate, I anticipate that I’ll graduate in Spring 2021 — 2 years from now. Seems like a long time away but it really isn’t. Because as they say: time flies. And It really does. Feels like yesterday when my wife and I were discussing whether it even made sense for me to apply and enroll to this masters program.

  • Tennis serve in slow motion

    Last week, with just my iPhone and a camera tripod, I recorded myself hitting tennis balls launched by the ball machine and recording myself smacking a few serves.  The idea of recording myself was inspired from several articles that I had read from tennisplayer.net. To elaborate, I wanted to objectively analyze my tennis strokes — see them through a different lens.  And after I recorded the clips, I uploaded them up to my computer and watched myself and was completely surprised to find a major disconnect between how I was perceiving to hit the ball and how I actually hit the ball.

    For example, below are two slow motion clips of my serve. The first clip captures me hitting my serve as I have always hit my serve. And what shocked me the most was that I couldn’t believe how little I was elevating off of the court when jumping up and swinging upwards. I always thought I deeply bent my knees and launched upwards. But that’s not the case.  On top of that, my left foot barely moved past the service line, opposed to (pros) landing up to 1 foot within the baseline.

    After watching myself, I decided to alter my serve, focusing on one change: a deep knee bed. That’s it. No other adjustments. Not swinging arm. No tweaks to the ball toss — just singularly focused on bending my knees and shifting my weight evenly to both planted fleet. The results were baffling. Not only did I rise higher off the ground, but I landed two to three times further into the baseline than my previous serve.

  • Blistered fingers

    When I first started playing ukulele, about six months ago, I would occasionally wince when lifting my fingers off of the nylon strings.  Because in the beginning, the flesh of my fingertips were fresh, no callouses. But slowly, over time, after repeatedly striking down on the strings, my fingers gave birth to a new layer of skin, a thick coat protecting them from the piercing pain caused by the strings.

    And now my fingers are repeating the same painful cycle.

    About a week and a half ago, I started playing my new guitar that’s strung with steel strings, thin and sharp. And last Saturday, I lost track of time, jamming away for a little over an hour. The next morning, my index finger was throbbing, a blister forming at its very tip. As a result, I’ve been unable to play any of my instruments, giving myself a week to let the blister heal (and hopefully develop into a callous). Even now, as I type this up, I twinge in pain every time my left index finger strikes the keyboard.

  • Learning a new language

    I studied Spanish in high school for four years and 10 years later, I’m embarrassed that I can’t form a comprehensible or grammatically correct sentence.

    I traveled throughout Europe last Christmas and was impressed by the number of bilinguals. Most people fluently spoke a combination of English, French and German. My second language, Vietnamese, however, is barely conversational.

    My Vietnamese stagnated 15 years ago. In elementary school, I was immersed in an after school program where I learned how to read, write, and speak Vietnamese. The majority of my friends spoke the language too, which was conducive to learning the language. But now, I rarely practice and have forgotten the majority of it.

    I was motivated to improve my Vietnamese after traveling to Vietnam last year. I was disheartened by the inability to communicate with my 9 year old nephew; my weak vocabulary limited the dialoge. My cousins taught me new words but by the end of the trip, I couldn’t remember any of them.

    Learning French

    In order to improve my Vietnamese, I started learning French. I figured that if I could learn a lanuage from stratch, I could use the same principles and apply it to learning Vietnamese.

    I searched online for the best methods to learn a new language. I purposely avoided any articles/books that promised short term success (e.g “Perfect French in 30 days”). After reading reviews on Amazon, I ordered Fluent Forever.

    With the books help, I built my curriculum. It cosists of:
    • Learn the international phonetic alphabet (IPA)
    • Train my ears with minimal pair trainers
    • Daily practice with Anki
    • Learn grammar

    Reflecting back at the last 3 months, I’m proud of my progress. I’ve ritualized learning French into a daily habit. I failed in the past due to inconsistency – it was never a habit.

    First French Translation

    Here’s my first translation from the book “French, A grammar based approach“.

    La salle à manger is petite. Il y a quatre chaises et une table dans la salle à manger. Sur la table est une nappe. Elle est vert. Il y a aussi des assiettes, des couteux, des cuillers et des fourchettes.

    Est-ce qu’il y a une tasse sur la table? Oui, il y ya trois tasses et un verre. Les tasses sont petites.

    Qu’est-ce qu’il y a dans les tasses? Il y ya du café dans les tasses. Qu’est-ce qu’il y a sont les verres? Il y ya du vin. Le café est noir et le lait est blanc. Il y ya aussi de la viande sur une plat, et il y ya légumes sur une plat.

    Qu’est qu’il y ya des fleures? Oui, il y ya des fleures dans un vase. Comment est le vasse? Il est joli; il est vert et brun. De quelle couleur sont les fleures? Il y ya rouge et blanc.

    Change in mindset

    “You will never change your life until you change something you do daily. The secret of your success is found in your daily routine.”

    —John Maxwell

    I’ve reframed my expectations. Instead of expecting fluency – both Vietnamese and French – in a short period, I’m building up my vocabulary and grammar; I’m immersing myself with people, books, and videos.

    I look forward to learning more about the people, new and existing, especially my nephew.