Let's Go

This past weekend I played Go in the 28th Northern California Ing Cup at the Hotel Kabuki in San Francisco. It was a one-day event with 4 rounds. $5,000 was split between the various winners in different categories. One of my friends won 3rd place in his division, and another played her first-ever ranked games. We all met a famous Go professional and Youtuber, Haylee Lee.

I had a fun time playing the game and meeting people, but results-wise, I didn't do too well. It's quite frustrating. I battled the same problems I've faced for as long I can remember — thinking too slowly, hesitating to make a choice between all of the options, initially exploring in a bold direction, but then falling back to a safe and small choice — and I failed to come out on top this time.

To understand this feeling more clearly, you need to see Go the way I do.

Go is also known as The Surrounding Game, because the goal is to surround more territory than your opponent. It's easy to understand the basics. You play one move at a time. You surround empty intersections to increase your score, or you surround your opponent to prevent them from increasing their score. It has a simple set of rules. However, having a wide open board means you have over 300 options where you can play your stones.

300 may seem like a lot of choices to pick between, but it's actually somewhat easy to decide once you understand your goals. Deciding on a move in Go is like deciding on any other choice in our everyday lives. You narrow it down based on what makes sense to you at the time. Out of your 300 options, 30 moves may be illegal or physically impossible. 250 may be considered a waste because you're simply feeding your stones into the other person's territory, or you're playing into an area that you already own. Out of the remaining 20 moves, maybe all of them are reasonable in some sense, but only 3-4 are optimal for your end goal. And out of those 3-4, the best move depends on your opponent's experience and your ability to predict the future.

Now, imagine: you're playing against an opponent you just met. You both have the same goals to maximize territory. With each move you play, you think you've narrowed down the options to the top 3 moves, and you think you're picking the best options. However, by the end of the game, you have very clearly lost, and you're not entirely sure why. Now, multiply that experience by three or four times. Frustrating, right?

Well, it's not all bad.

When I take a step back to think about it, playing Go and living a good life are somewhat similar. It's just that the goals may be different, and in life we probably have more options that we even know about. In Go, you're trying to maximize your territory points. In life, you have to figure out your goal first, and then you do what you need to do in order to reach that goal. Because there are extra layers, life is a much deeper and more dynamic game, but Go is a fun simulation that forces me to reflect on my fundamental tendencies.

So here's to: thinking faster, hesitating less, and committing more to bold dreams. I may have lost the battle this time, but it's experiences like this that motivate me to keep learning so that I can win the everlasting battle against myself.

My 2020 Goals

In 2016, I graduated from college and entered the professional world as a software engineer in the Bay Area. I've been working for almost 4 years, developing my career, building up some relationships, and traveling a whole bunch. It's been a fun time, and I'm sincerely grateful that I have lived such a comfortable and healthy life.

Lately, I've been stumbling around, not knowing what I want to do, and constantly grasping for what I'm supposed to do. It makes me feel like a robot. I don't know how to understand or fix this vague feeling, but I'm going to try by not being afraid of doing what I want to do. Maybe that will lead me somewhere.

Starting this year, I want to better myself as a person in a few ways: I want to express myself more clearly and confidently. I want to work more diligently and deliver results reliably. I want to understand more about the world, and I want to improve the communities I'm a part of.

The reason I want to do these things is to get closer to the one thing I value more than anything else in this world: happy people around me.

I won't dive into the complexities of how I define happiness in this post, but I think it has something to do with me trying my best to do what I think is right.

The happier I am, the more I can help other people become happy too.


Increase Samsara's ability to serve its customers

As an employee of this quickly growing business, I impact a number of communities. Within the company, I help other employees become more productive by being knowledgeable and fun to work with. Externally, customers use Samsara to increase the sustainability and safety of their operations. This goal is about bringing joy to my teammates and adding real value to the world economy.

  1. Reduce compliance risk for customers using our product
  2. Decrease costs for us to operate our platform
  3. Lead a team in building a new feature
  4. Mentor a summer intern
  5. Be acknowledged as a Senior Software Engineer

Enjoy and share the game of Go

I love the game of Go because of its paradoxical nature and how it helps people communicate with each other. It's competitive because every game has a winner and a loser, but it's also cooperative because it's about two players having a conversation on the board about what they think is important. It's technical because you have to practice the logic of the game in order to get better, but it's also artistic because you often strategize and express yourself using a gut feeling formed from previous experience. There's a huge Go community in the world, but it's concentrated mostly in Asia, and I want to increase awareness of the game here so that I have more people to play with.

  1. Play in 3 AGA rated tournaments
  2. Bring at least 1 friend to play in two tournaments
  3. Help at least one person reach ≥ 15kyu ability
  4. Attend 20 community Go club meetups
  5. Reach 1 Dan (AGA) strength by July 1st, 2020

Improve my budgeting ability

This goal is about improving my financial literacy and awareness. Money is potential energy, and I think that understanding how this energy can be accumulated and moved around is super helpful as a basic skill. I also have some financial milestones that I want to reach: purchase a house somewhere in the next 2-5 years, plan a fun vacation for my family every year, and save enough to have the option to retire early.

  1. Save more than 60% of my take-home pay per month
  2. Track largest and smallest costs per month
  3. Track most profitable assets per month
  4. Track progress towards 3 financial goals (buying a house, travel budget, retirement)

Diversify my income streams

Someday I will be my own boss and an entrepreneur. I want this because I want to be able to spend my time on things that I think are important to the world. I can't always do that when my paycheck is coming from another person and I'm working for that person's goals. Although I'm not yet ready to take the step to go all-in on building my own ideas (because I don't know what those ideas are yet), I think I'll be able to figure it out someday. In the meantime, I'm going to experiment with mini-entrepreneurial efforts to start building a safety cushion for myself and learn some new skills.

  1. Sell 10 photoshoots
  2. Earn $50 in dividends per month from investments by the end of 2020
  3. Create a monetizable YouTube channel

Write more

I feel the most confident during times in my life when I have a regular habit of journaling and reflection. That habit has fallen through the cracks in recent years, but I want to bring it back, and I want to share it with others who care.

  1. Write a weekly newsletter and post it on my blog

There are a lot of goals here. I'm not sure I'll accomplish every one of them, and some of them might change over the course of the year, but if I spend my time wisely and stay focused, I will enjoy at least attempting all of these things. At the end of the day, the entire purpose of pursuing these goals is to help me be the best person I can be for the people around me that I love. The most important thing is that I can be caring, reliable, and useful to my loving family, my amazing friends, and most importantly, my dear Catherine.

I'd love to share my growth with you over time, so if you'd like to follow, drop your e-mail in the box on this site and I'll be providing regular updates.

2018 (video)

So I meant to post this video once 2019 rolled in, but let me tell you.. the app that I used to compile the video really had a hard time deciding if my phone had enough space available. So that was an obstacle. And then.. between traveling and work, I totally dropped the ball on this. Anyways, it's here now, edited and music-ified, and I feel really grateful when I watch this video and reflect:

Last year was a big year for me. It was a year of a lot of meaningful exploration.

I “went back to school” to start a Computer Science club with some amazing people. I learned about economics, politics, distributed systems, and making smart investments while jumping down the blockchain rabbit hole. I traveled through 6 countries (one of which I’ve visited 6 times now, and it’s not the USA or China). I put myself through over 50 job interviews, ran a 200-mile relay with 11 friends, and caught a 40-pound lingcod by the Farallon Islands. It was a fun time.

I think I’ve always been a great explorer, because I enjoy putting myself out there in uncomfortable situations and seeing how I can make the best of it. But I honestly think that I wouldn’t be where I am today without all the amazing people who have stuck around to love me, challenge me, and enjoy life with me. Many of those people made it into this 1-second daily compilation, but there are also a lot who aren’t featured. A warm thank you to all of you.

2019 is already a fourth of its way out the door, but I’ve been working on a new theme for myself. It’s not enough to be an explorer. I need to be a builder. I have time and energy, and I need to see what kinds of useful things I can create for the people I love. I’m blessed to have the opportunities that I have today, and I hope that I can make the most out of them.

“The planet is dying. The sun is exploding. The universe is cooling. Nothing is going to matter. The further back you pull the more that truth will endure. But when you zoom in on Earth, when you zoom in on a family, when you zoom into a human brain, and a childhood and human experience, you see that all these things matter. We have this fleeting chance to participate in an illusion called I love my girlfriend and I love my dog. How is that not better?” — Dan Harmon

8 months of Software Engineering in San Francisco

Comp Features team showing off Samara holiday swag. (Me, Zach, Ian, Casey)

8 months of Software Engineering in San Francisco

For all of you who read about my first month at my new job, here’s a surprise: I’ve just passed my 8-month mark! I wanted to put together a reflection for myself and also update those who are curious what it’s been like to live and work in San Francisco as a software engineer at a growth-stage tech company. Work has been a huge grind, but at the end of the day, life is good. I’m grateful because I’ve been able to balance my time so I am maximizing my learning and my contributions to my team, while still spending time with friends and family.

So what have I been up to? Building things with Samsara!

What is Samsara?

We are a company building a platform for connected sensors. Think Alexa or Google Home, except instead of a little box sitting next to my bed that I can use to turn the lights on with my voice, it’s hundreds of thousands of similarly-sized boxes plugged into vehicles and factory production lines to help the world run more smoothly. From GPS, accelerometer, and thermometer to computer vision, microphones, infrared, and vibration sensors — you name it. We pack these sensors into portable boxes and then build a data platform on top. As a result, our customers can measure and record real-world data and even issue commands so that whatever they’ve been creating or moving around the world, they can do it faster, cheaper, and just better all-around.

This is one of our “boxes” — a VG34, short for vehicle gateway. It records GPS, engine diagnostics, accelerometer, and other data, and is about the same size as a large cellphone. It takes 2 minutes to set up in basically any vehicle.

Way cooler than Alexa. Although to be fair — Alexa helps me play jazz playlists at dinner parties and that’s something our Samsara devices don’t do… yet…

My team

Ever since I started last July, I’ve been working on an awesome team: Compliance.

As a whole, Compliance at Samsara is responsible for building tools to help our fleet customers meet government regulations, particularly the ELD Mandate. This mandate was set up to help keep drivers safe on the road, and basically defines how long drivers can work for and under what situations certain exceptions can be made. Companies that fail to stay compliant may be fined or lose their right to operate.

At Samsara, we split our compliance work into two teams. Compliance Foundations builds systems to record compliance-related sensor data in a scalable and accurate way. Compliance Features (the team I’m on) works on features to retrieve and perform calculations on the stored data so that our customers can easily prove that they’re compliant.

Samsara’s Electronic Logging Device (ELD) Compliance Solution

We also have other product-engineering groups as well as infrastructure teams. I work a lot with other teams in the Core Fleet vertical, and I work a bit with the infrastructure teams, but it’s rare for me to work with engineers from the other product-engineering verticals. So far, this engineering org structure has worked well for us because we can keep our teams small and focused.

Everyone on my team sits close to each other so it’s easy to have impromptu meetings when we need to gain some context on a project that we overlap on:

Our all-knowing Compliance Features PM, Jonté, clarifying some customer needs for an upcoming project.

But we also know how to relax and have fun when we need a break:

We hiked to Alamere Falls during a team outing. (Ian was napping on a log.)

Customer Focus

In terms of the work I do, if you’re not a truck driver, a fleet manager, or a FMCSA regulator, it might be hard to empathize with my team’s products from the user’s perspective. That’s how I felt when I started. But one of the awesome things I love about Samsara is that it’s really easy to get some face time with actual customers. We have a great design team and product operations team that organizes visits to actual truck yards so that we can meet with the owners of these companies and listen to their feedback. I took advantage of one of these opportunities to visit a customer up in Stockton recently, and I was able to see how valuable my work was to them.

’Twas a long drive up to Stockton. Sujay was the other engineer who came on the trip. (Not pictured: Haley, Corbin, Jenn)
Two refrigerated truck units with Samsara’s AG24s and EM21 temperature sensors installed.

For this customer visit, I learned a lot by just asking fleet managers how they operate throughout the day, and how they leverage Samsara’s platform to perform important tasks. We validated a number of pain points that we had theories about, and we even solved some of their problems on the spot by teaching them about new features. Overall, a very fun and valuable experience.

Interesting Engineering Work

Engineering-wise, the compliance team builds and maintains features surrounding some interesting data structures and architecture.

For example, there’s a state-machine system we call the “Rules Engine” that we use to model all the rules that the government has set for Electronic Logging Device (ELD) users, so that we can help drivers stay compliant. Zach and Casey have continuously iterated on the Rules Engine to provide violation information to our customers across hundreds of thousands of devices. The Compliance Foundations team spun up a new micro service to handle events recorded by the ELD and the Features team has added new algorithms and features to that service over time. Ian has worked on many front-end features and re-designs in order to make our UI as intuitive and painless as possible. I’ve also built out some new API endpoints for exporting compliance data, ultimately contributing to Samsara’s developer ecosystem.

All of these projects are built using our tech stack of Golang on the backend and Typescript on the frontend. We deploy new features based on a feature-flagged approach and track metrics on Datadog and AWS Cloudwatch.

Lessons Learned

Giving Estimates

Over the past few months, one of the best lessons I’ve learned about being a good software engineer is on how to give better estimates. Starting the job, I would give really rough estimates that would often be too aggressive because 1) I didn’t scope out the relevant code sites enough, and 2) I made assumptions on how many hours per week I’d actually get to code and think about coding.

To address better scoping as an organization, the engineering team has recently started to adopt a more structured Request for Comments (RFC) implementation spec document. We’d all use this doc when starting a new project so that different stakeholders could provide design input in the early stages of the project.

We like to use Dropbox Paper for most of our implementation specification documents.

In terms of time-bounding my actual rate of work, I’ve started using “engineering weeks”, as defined by 2–3 days per week of actual coding time. Tuesdays are full of team and product-related meetings, while Mondays and Fridays are often occupied with candidate interviews and other interruptions. We try to keep Wednesdays and Thursdays as no-meeting days, but inevitably some extra engagements get sprinkled in throughout the week, and so we arrive at the 2–3 days of actual coding work per week. At first when Zach, my engineering team lead, taught me to estimate this way, it sounded a little strange that only about half of my week was spent on actual coding, but after experiencing the true flow of a project, it started to make a lot of sense. The meeting time that we don’t count as “coding” time contributes a lot to the success of a project by making sure that it’s designed well and that we’re not doing throwaway work.

The Power of Clean, Reusable Code

One of the favorite things I worked on was creating an internal library in Typescript that provides a variety of tested functions to make it easy to work with time range data structures. We emphasize commenting and documenting our code, so each of these library functions has comments to describe how to properly invoke each function. I had to take a couple days worth of detour from my project at the time to create this library, but it’s since saved a good amount of time for other people on the team, which is awesome. I’m looking forward to creating more reusable and useful tools like this for my team to help us scale!

Share Work Interests With Your Manager

First of all, you have to think about and formulate your interests so that you even have something to share, but once you do, talking about them with your manager will help you progress in your career. I’m thankful for the great managers at Samsara who are helping keep the team focused so that we can deliver quickly on key features, but also allowing each individual the opportunity to work on things that interest them.

Caught my awesome manager Derrek off-guard with this candid pic.

For example, after working on an API project, I realized I really wanted to work more on the future of Samsara’s developer ecosystem. My manager, Derrek, talked through ideas with me and has been a great sounding board for identifying high-impact work that I can take on in this direction.

More pics

All of these pictures were taken during social gatherings at Samsara. Some of them were fun networking events, others were self-organized club hang outs, and the last picture was taken during one of our quarterly hackathons.

Samsara gingerbread house competition.
Casey versus Zach in 3D tic tac toe.
Board game social night!
Samsara finishes the startup escape room.
Advith’s experimental sports club enjoying some good old-fashioned dodgeball.
Jigsaw puzzles to keep us occupied while we wait for deploys.
Our first-ever Super Smash Bros Ultimate Tournament.
Sushi-making networking event, hosted in our cafeteria :)
The 3:00pm daily Plank club.
The engineering team enjoying American Truck Simulator in our new training center.

Taking a step back

  • Samsara is adding 200,000 new devices to the platform every year.
  • We now have 5,000+ customers worldwide.
  • We’re collecting 100 billion sensor data points every year.
  • The company’s valuation has tripled to $3.6 billion since I’ve joined.
  • We’re expanding our offices in San Jose, Atlanta, and the UK.

What’s next?

  • I’ll be moving to Atlanta for a few months to help hire and onboard new engineers!
  • The compliance features team is growing! (Hi Nathan.)
  • I’m helping lay groundwork to help our new app marketplace flourish in the future :)

Last but not least, shoutout to my roommates, my homies, and my amazing girlfriend for keeping life outside of work fun, healthy, and beautiful.

Homemade dumplings for Chinese New Year!


If you’re looking for a software engineering job (and even if you’re not interested in Samsara specifically), hit me up because I’d love to help you with studying tips, interviewing tips, and networking!

Feel free to connect with me on LinkedIn.


Special thanks Advith, Alex, Zach, Casey, Derrek, Ryan, Priscilla, Sarah, Sujay, and Elisha for helping with edits!

Assets and Liabilities

There's some quote out there that says the things you do in your free time are the things that will either set you free or enslave you.

This is a powerful idea. For me, in order to live a long and meaningful life, I need to manage my resources well. Resources include abstract things like time and energy, but may also include more concrete things like money, collectible trading cards, and bananas.

Resources are managed by balancing two things:

1) Assets - things that help you gain more resources
2) Liabilities - things that cost you to lose resources

Assets help me earn more resources, i.e. financial investments, and rental properties. Liabilities cause me to lose resources, i.e. mortgage payments and unhealthy relationships.

So what are the biggest assets and liabilities in my life?

Time is my most valuable asset. With enough time, I can do anything. Absorb knowledge, assemble teams, enjoy life, reproduce, leave a legacy. In fact, I can actually turn this asset into other assets. Life experience, career capital, valuable relationships.

On the flip side, wasting time is my biggest liability. Watching TV, browsing Reddit, hesitating. Doing things I don't want to do, just because they're easier to do than the things I actually want to do. Procrastinating.

If you want people to like you...

You just have to do two things:

1) Be the best human being you can possibly be, and
2) express genuine interest in other people.

I've seen my dad putting these two points into action over the years, especially at dinner parties or on family vacations. Take tonight for example. We were strolling through some night market streets, and my dad goes up every other booth -- with no intention of buying anything -- and starts asking about the products, the seller's background, and other random things. Soon, he's laughing or teasing everyone around the booth, and then we either have a discount on the product or a smile on our faces. It's a win-win.