Young Reacts #94 – Why do you do code reviews?

During the QA session after my talk (which feels so long ago since I also moved on Friday), I was asked what I find the most exciting/stimulating for my career lately. After some thoughts, I realized the preparation for the talk was that. I never spoke in front of hundreds of people. I never gave a non-technical talk. I never gave a talk over Zoom. There were so many firsts for me, and I am proud of myself. I didn’t know that I could talk about my career, or anything really, coherently for 20 minutes. Now I know!

I especially want to thank my wife Eunyoung, for her support and patience to listen to me over and over for the last month. 🥰

Software Engineering ⚙️

A Better Code Review – Gilad Peleg

Code reviews have become a standard engineering practice. But not everyone agrees on the why. I believe that they are a way to spread knowledge. They are too late in the process to change the design meaningfully and too unreliable to catch bugs. Based on that belief, I should surface those important pieces better. Why do you do code reviews?

Why we decided against GraphQL for local state management – OkCupid

The OkCupid team explains why they don’t find Apollo’s local state management is not yet ready. While I think the cons are mostly Apollo client’s issues, the article can be helpful if you want to understand pros and cons of using the Apollo client for local state management. For the record, I think the Apollo client is too heavy-handed, and React state and reducer hooks can meet most of my needs.

Headless Recorder (previously Puppeteer Recorder) – Checkly

At my team, writing an automated e2e test takes a lot of effort. So much so that I get scared just thinking about writing it. The exposed API for our internal framework is so granular that I have to manually add “wait” statements for a dropdown to open after a click. We chose our internal framework over Cypress for consistency, but I still want a helper extension like Headless Recorder.

People ❤️

Stephen Wan: Staff Engineer at Samsara – Stephen Wan

Here is another Staff Engineer interview. These interviews give me a peek into not only the works but the lives of the engineers, and I love that very much. I also appreciate that Wan calls out having an organizational history as one of the reasons he became a staff engineer. It has put my current work in a longer-term perspective.

The Management Flywheel – Camille Fournier

The lesson applies even if we are not a manager. I understand that it is tempting to do something big to prove ourselves after joining new teams. But that is precisely the wrong move to make. We need to start small, learn more, and build momentum.

Business 💸

Google to Increase Push for Apps to Give Cut of In-App Purchases – Bloomberg

Amidst anti-trust scrutinies, Google seeks to standardize Android app payments around Google Play. I first found the move surprising. But I’ve learned that the larger developers got exemptions from the policy, which doesn’t look good from a regulatory perspective.

2020 Bundles – Ben Thompson

A concise overview of how different subscription bundles fit with the corporate strategies: Netflix, Disney+, Amazon Prime, Microsoft Xbox All Access, and Apple One.

Young Reacts #93 – Sunsetting Moment.js

I am giving my first big conference talk in front of 450 people (!) tomorrow about how curiosity and courage led me to create a more significant impact in my current role. Unfortunately, the talk will be in Korean, so I won’t share the slides or the live recording here. But I hope to share my lessons here after the presentation.

Photo by Chris Montgomery on Unsplash

Software Engineering ⚙️

Moment.js Project Status – Moment.js

Moment.js, the de-facto standard Javascript library to handle time and timezones, has announced its active development, thanks to newer libraries like Luxon and the new Temporal proposal. I first used this library in my first job eight years ago, and still use it in my current role. Kudos to the Moment.js team to have shepherded the project to this point 🎉

If you are interested in learning more about the issue with “Date” in Javascript, read this.

Fluid Framework – Microsoft

Fluid Framework is “a collection of client libraries for distributing and synchronizing shared state” without a customized server application.

Tools like Google Docs, MURAL, and Figma have raised the bar for all collaborative applications. The business users expect real-time collaboration inside their tools now. I bet my team will have to implement something similar soon.

Speedy Neural Networks for Smart Auto-Cropping of Images – Twitter

People found yet another example of biased algorithms, this time on Twitter itself. The algorithm above seemingly prioritizes white people over black people when cropping images for the feed.

People ❤️

Things To Know About Engineering Levels – Charity Majors

Charity is on fire with her writing lately. This blog post is another gem. It scratches the exact area I’ve been wondering: how to get to that next level. Two takeaways for me: first, “not every opportunity exists at every company at every time.” Second, more practically, don’t join a startup without much high-level work to do, or a company already with enough staff/principal engineers.

Meeting everyone on a new team – Anna Shipman

Anna, a Technical Director at, recollects her introductory 1:1s with her 50-person organization. The article is very detailed and makes an intriguing read.

But I was a bit taken back because, even when her people explicitly told her that they enjoyed building relationships with her, she chose not to make the 1:1s recurring. I am used to and expect regular quarterly reviews with my skip-level managers. I suppose everyone has their preference.

Business 💸

ByteDance picks Oracle as partner to try to save TikTok U.S – Reuters

It is old news that Oracle, not Microsoft, will buy TikTok in the U.S. I am not sure what Oracle will buy exactly yet, given the Chinese sanction against the export of recommendation algorithms. In the meantime, the U.S. government bans TikTok and WeChat.

TLDR Stock options – LTSE Tools Team

This interactive tool provides a reality check on the value of the stock options you get from your prospective employers. The real challenge is to figure out where the employers fall on the curve, given that they likely won’t provide any information that might turn you away.

Young Reacts #92 – Remote pay tradeoff

Silicon Valley companies are having debates about remote work. Not only is there a question of whether to go remote-first or not, but there is also one of whether to adjust pay. Teams have to think through three angles:

  • Should they be paid according to their contributions to the company, which may not change meaningfully based on their locations of work?
  • Should there be an adjustment based on cost-of-living so that employees don’t feel more incentivized to work remotely?
  • Should there be an adjustment based on cost-of-labor so that employers can pay competitively across different labor markets?

I find them all valid perspectives to have, which makes the debates all the more difficult.

And there is an issue of reliable data availability. Industry-specific cost-of-labor data are sparse in non-tech hubs. While changing compensation policies is tricky, the companies should get ready to learn and adjust their systems as their first tries at the problem play out in the talent market.

Photo by Christine Roy on Unsplash

Software Engineering ⚙️

We need more inclusive web performance metrics – Scott Jehl

The typical web performance metrics do not answer vital accessibility questions such as:

  • When and how are accessibility trees built and exposed?
  • Does client-side javascript block executions of assistive technologies?

Avoid Export Default – TypeScript Deep Dive

I’ve instinctively avoided default exports in Typescript. But it is nice to see the drawbacks listed. To me, the most significant pain points are the lack of autocomplete and typo protections.

People ❤️

How I operated as a Staff engineer at Heroku – Amy Unger

If one stays at the same place long enough to operate at the Staff level, it’d be easy to accept the status quo—because they are the status quo. Amy suggests that old-timers should “invest in meeting new folks as a counterbalance.” I agree 100% and took a note of it to follow through.

Every Public Engineering Career Ladder – Shawn Wang

This collection of career ladders would have been useful in my previous role. I thought I’d share for those who influence their teams’ career tracks.

Business 💸

Xbox All Access seems like one of the best deals in gaming – Ars Technica

Xbox All Access is an enticing proposition for which I would seriously consider signing up. Rather than competing with Sony on Sony’s turf, Microsoft leverages its investment in the cloud infrastructure and creates a new axis to compete—subscription and streaming games. A lot of transactional consumer products and experiences now are subscribable.

Young Reacts #91 – Engineering Isn’t A Demotion

Right before the long weekend began, I had a chance to chat with a colleague who has been at Netflix for more than seven years. I have been struggling with giving some feedback to my manager and thought she would understand my predicament. So we chatted about my foster cats for a couple of minutes, and I straight-up asked her, “how do you give feedback to the manager new to Netflix?”

Then we discussed the power imbalance and how it makes reports feel awkward about giving feedback to their managers. She also suggested that our HRBP can be an excellent person to talk through my feedback. But the most memorable advice was when she pointed out that my manager is likely going through an imposter syndrome phase, and that he’d appreciate any signal about his contribution so far. So if I can give feedback with positive intent to support him, the conversation will go well.

This chat was such a stunning colleague moment. It was a neat coincidence later that day when our CEO at an all-hands emphasized the importance of positive intent.

Photo by Kelly Sikkema on Unsplash

Software Engineering ⚙️

A year with Spectre: a V8 perspective – V8

I read an old article on Spectre I collected a year ago. Then I found out that we still don’t have a proper hardware-based fix for Spectre since the fix will negatively impact the performance too much.

Chrome Content Optimization Service Runs on Go – Go Dev

I didn’t know that Chrome also had a server component for performance optimization. Today I learned.

People ❤️

If Management Isn’t A Promotion, Then Engineering Isn’t A Demotion – Charity Majors

I am 100% behind this article that engineers become managers because they need the powers to fix the problem and that engineers should have information and opportunities necessary to tackle big problems.

One additional note, I have an allergic reaction when managers refer to themselves as “leaders,” since that implies that the others (usually the reporting engineers) aren’t expected to lead.

Business 💸

Facebook complains, Apple responds: iOS 14’s big privacy change gets postponed – Ars Technica

Apple pulled back from deprecating IDFA (identifier for advertisers) in September. But the deprecation will come next year. It’s not clear to me how hard Facebook will be hit; it still got its logins. But I am sure other lesser networks will be decimated.

Also, here is an article on how precisely we are tracked, down to our names, addresses, and daily movements.

Epic, Apple and the Platform Wars – Paradox Podcast

I stumbled upon a podcast from a Swedish mid-size game publisher on Epic lawsuits. The gist was that the publisher sees the lawsuit as the battle between two closed ecosystems and that they prefer the future where there are multiple competing ecosystems. It was the first take I heard from the industry insiders.

Tailwind CSS: From Side-Project Byproduct to Multi-Million Dollar Business – Adam Wathan

I rarely hear opensource success stories but here is one, hitting $2 million revenue.

Young Reacts #90 – npm v7 beta

A few days ago, a college student asked me if there is anything I wish I learned sooner in my career. I thought I’d share my answer here too! 🙂

  1. I am solely responsible for my career. I need to keep learning and looking for new growth opportunities. Sometimes take new responsibilities opportunistically.
  2. I need to be able to look at myself in the mirror. That means empathy, inclusion, honesty, and integrity.
  3. Everyone will go through ups and downs at some point, so cut some slack. I will need it too.
  4. I don’t need to know/understand everything. While that is valuable, it is impossible. I need to let go and trust others to fill the gap.
  5. Be skeptical with higher-ups (especially the executives). If the upside (say, the company is getting sold) is big enough, they will screw me.
  6. My network matters. I am not good at expanding, let alone maintaining it. But my few connections already have opened up opportunities (including Netflix).
  7. Any feedback is powerful. But a positive, specific, actionable feedback is far more powerful because all top performers are different.

Software Engineering ⚙️

npm v7 Series – Beta Release! And: SemVer-Major Changes in npm v7 – npm

I just found out about this release from two weeks ago. I am excited by this news since npm will soon support monorepos. I am using yarn for them at work, but don’t want to upgrade to yarn 2 since it has departed radically from the package.json format I am used to.

Dear Google Cloud: Your Deprecation Policy is Killing You – Steve Yegge

How Google Cloud treats its customers makes me look back at how I am served by and serve other teams and platforms. The customer-oriented mindset that Amazon is famous for applies to my work, too— whether I am serving external or internal customers.

What’s a reference in Rust? – Julia Evans

I am having a rough time learning Rust, especially how to handle strings (Javascript was so much simpler!). But I understand them a little bit better now thanks to Julia’s explanation that a reference can point to the heap, the stack, or the data segment of your program.

People ❤️

Our remote work future is going to suck – Sean Blanda

A lot of us in the Silicon Valley buy that remote working is a good thing. However, if your company figures that an engineer in South Korea can do 80% of your job for 30-50% of your Silicon Valley (or in remote companies, Tier 1) salary, will it still employ you? I am not sure about mine.

I do believe that the remote work will provide opportunities for people outside the Valley. But under the current system, it will just pit every worker against another on a global scale.

Business 💸

Pinterest cancels huge SF office lease in unbuilt project, citing work-from-home shift – San Francisco Chronicle

Many people talked about how work from home will upend Silicon Valley’s commercial real estate. This announcement reads like the beginning of the upending.

Open letter to Australians – Google

Australians proposed a rule “to allow news media businesses to bargain individually or collectively with Google and Facebook over payment for the inclusion of news on their services” along with several other restrictions over the search and recommendation algorithms. I am not sure how this will pan out. Won’t Google and Facebook just cut mainstream news and surface more fringe media?

Young React #89

This week has made it hard for me to stay optimistic. In the Bay Area, we got not just the worsening pandemic but catastrophic wildfires clouding over millions of people. It’s less than two years since this area saw fires like this, making global warming all the more evident. I worry that the workers (warehouses, restaurants, factories, farms, and more) who can’t work from home have already been exposed to the Coronavirus, but now they also need to bear with the smoke. Things can’t go on like this, and I need to act.

Software Engineering ⚙️

An Update on MDN Web Docs – Mozilla

Due to the recent layoffs at Mozilla, MDN will get less investment from Mozilla—in fact, they laid off all technical writers. This change of directions worries me greatly because MDN has been THE go-to resource for web APIs.

TypeScript exercises – Marat Dulin

Marat created a set of Typescript challenges for you to test how familiar you are with the language. They get challenging quickly, and I confess I couldn’t solve the last two on my own (even though I’ve been using Typescript over the previous five years!).

ts-migrate – Airbnb

Airbnb released a tool that migrates Javascript to correct Typescript. I haven’t used it personally. But I, perhaps counterintuitively, recommend the tool if you are already familiar with Typescript. When I add the types manually, I clarify the domain and codify it into types. If you are not used to writing Typescript, that manual process will prepare you to think in a type-safe way.

People ❤️

Katie Sylor-Miller – Frontend Architect at Etsy – Katie Sylor-Miller

I am reading other interviews on I shared last week. I read Katie’s since she is one of the rare staff+ engineers on the frontend. There are many bits of wisdom, but I especially loved this quote on how she operates:

It starts with taking in a ton of input from the work folks are doing – seeing that this team has a problem doing x, and another team has a problem doing y. Then you mix all that input up with your experience and what’s happening in the industry as a whole and let it sit in your brain for a while, until finally it all clicks and you realize that the deeper cause underlying both problems is z, so you come up with a plan to fix that problem which is really hard to fix.

Business 💸

Apple, Epic, and the App Store – Ben Thompson

I generally find Ben Thompson’s article insightful but especially liked this one on the Epic lawsuits. I liked how the article broke down what the App Store does, installation, payment, and CRM, and whether each piece benefits the consumers.

Young React #88 – Epic Lawsuits

This week was full of regulatory events impacting the largest tech companies, Apple, Google, Uber, and Lyft. As I said in the previous newsletter, the tech industry will no longer be free from regulations.

Photo by Bill Oxford on Unsplash

Software Engineering ⚙️

Yes, websites really are starting to look more similar – Sam Goree

I don’t buy the methodology of the study or the conclusion that the larger tech companies benefit from the similarity. However, it’s worth thinking about the tradeoff between the usability/accessibility of a website and the creative expression.

The consequences of memory allocation size for a Lambda function – Tamás Sallai

I rarely use lambda these days. But this article corrected the assumptions I held in the past. I especially liked the point that, due to the limit to the scaling speed, the larger lambda instances will translate into the more processing power.

People ❤️

Ritu Vincent – Staff Engineer at Dropbox – Ritu Vincent

Ritu’s interview was an inspiring read with a couple of takeaways. Most importantly, I was reminded that, while I seek stretching projects, I don’t actively seek feedback on how I am doing. A few projects immediately came to my mind, and I will follow up this week.

Business 💸

Epic is suing Google over Fortnite’s removal from the Google Play Store – The Verge

Epic Games, the developer behind the popular game Fortnite, is suing the two largest tech companies. The big tech hearing two weeks ago and the current public sentiment give Epic Games a good chance. Of the two, I believe that Apple, given its tighter control around iOS, is in a more serious trouble.

It really looks like Uber and Lyft might suspend operations in California – Quartz

Since the last year’s passing of California’s AB5, the law that classifies gig workers in California as employees, not individual contractors, Uber, and Lyft sought exemptions to classify their drivers as individual contractors. But the court ruled that both companies have until August 20 to make the change. The companies claim that they won’t be able to afford this change, and the drivers don’t want it.

The Trick With Personal Tokens is People Want Me to be Popular, Not Necessarily Succesful:” Alex Masmej – Alex Masmej

Alex tokenized his life, and now leaves some of his life decisions up to the token holders. I am amazed that the initial offering raised USD 20,000 among 30 investors, and that the price is going up. It is like Patreon on steroids.

Young React #87 – The New Brandeis Movement

I started learning Rust based on Rustlings, and it has been a joy. I love that the tooling enabled a newcomer like me to focus on learning, instead of tooling. It reminds me of my college projects. This should be how onboarding should feel like.

Software Engineering ⚙️

Stop using isLoading booleans – Kent C. Dodds

The most complicated component began its life with a simple isLoading. But after 2, or 3 more state variables, the number of states becomes unmanageable. Worse yet, Typescript’s exhaustive type checking aggravates the issue. I’ve been avoiding using state machines due to my lack of familiarity, but Kent C. Dodds pushed me over the edge.

A Guide to GraphQL Errors – Marc-Andre Giroux

This guide is the most comprehensive one on GraphQL error handling I’ve found so far.

Introducing Rome – Sebastian McKenzie

Rome is a comprehensive toolchain to bring compiler, linter, formatter, bundler, testing framework into one. The original author behind Babel builds it, so I am keeping a close eye on it. I first found the tool last March, and it is now in beta.

How GPT3 Works – Visualizations and Animations – Jay Alammar

I find how all these different deep learning models work confusing. But these visualizations enlightened me a little.

People ❤️

Equity for all? – Emily Kramer

Carta’s former Head of Marketing sued Carta for alleged gender discrimination. This lawsuit reminds me that the path to true inclusion is long and hard, and a politically correct press release isn’t going to cut it. I have to stay vigilant and actively fight against discrimination.

How to Break Up with Your Commitments – Elizabeth Grace Saunders

Not being able to say “no” is my worst weakness. I’d reluctantly agree to do something, then procrastinate (which is also from stress), and keep repeating the pain. The article made me reevaluate my current commitments at work.

Business 💸

The New Brandeis Movement: America’s Antimonopoly Debate – Lina Khan

The issue with the current tech monopolies is no longer about consumer harm. We all choose to use Google and Facebook. It’s about how the market is structured and who owns the power. This article summarizes this new perspective on tech regulation.

Young React #86 – Records & Tuples for React

My wife and I are heading out for a week-long vacation this week. Due to the ongoing pandemic, we will stay at a nearby Airbnb for a change of scenery. I hope you, too, try and make the best of the situation 🌴.

Software Engineering ⚙️

Records & Tuples for React – Sébastien Lorber

Records & Tuples is a stage 2 ECMAScript proposal to introduce native immutable data structures. Sébastien goes into how this could improve React’s unidiomatic techniques like useMemo. But I worry about the performance of the deep equality check, which will scale with the size of the records. Hopefully, the native equality check is faster than what we have now.

Incident Report: TaskRouter JS SDK Security Incident – July 19, 2020 – Twilio

AWS S3 is notoriously tricky to configure correctly, and this incident won’t be the last of its kind. Twilio left one of its public S3 buckets editable by anyone, and a hacker group injected malicious code into the SDK.

The Edge Computing Opportunity: It’s Not What You Think – Cloudflare

This article is a marketing piece from Cloudflare. But it does highlight the changing regulatory landscape as one of the factors developers now need to consider.

Business 💸

The Big Tech Hearing Proved Congress Isn’t Messing Around – Wired

The US Congress held a hearing with the CEOs of the biggest US tech companies, and presented the pointed critiques. With other news of how politics changes tech, this week feels like the beginning of a new chapter.

Microsoft to continue discussions on potential TikTok purchase in the United States – Microsoft

Microsoft officially confirms that it is negotiating a purchase of TikTok operations in the US. There will not be one global “tech” industry as the tension between the US and China escalates.

Hurting People At Scale” – BuzzFeed

This piece summarizes the ongoing internal turmoil at Facebook due to the mismanaged content moderation.

Young React #85 – What Does Sponsorship Look Like?

My wife has started her Master’s study at UC Berkeley, which is super exciting (She wrote about her journey to grad school here). Since she will take her classes remotely, I will be able to eavesdrop on her classes and get some free education as well. I am especially looking forward to a case-study class of tech companies.

However, we also ran into a predicament when she and I had meetings/classes at the same time. We live in a one-bedroom apartment, and our desks are sitting right next to each other. When we speak at the same time, our voices bleed into the other’s microphone and get in the way. But it’s already too late to get a bigger place since we just signed a new lease. Well, this explains why the housing price in the area went up.

Photo by Petr Macháček on Unsplash

Software Engineering ⚙️

TypeScript React Apollo – The Guild

In my current GraphQL-Typescript setup, I have to manually type individual useQuery and useMutation hooks, which is tedious and error-prone. This code generation tool autogenerates the typed hooks.

Relatedly, graphql-typescript-definitions from Shopify alleviates that problem by providing the necessary interfaces right from the graphql document. But it still requires manual typing at the end.

Svelte ❤ TypeScript – Svelte

The Svelte team recently announced that Svelte now supports Typescript. I have to admit that I had quite a simplistic view of what it means to support Typescript before reading this. The integration was quite involved since Svelte has its syntaxes and language server; the Svelte team extended its language server to understand Typescript and provide the language information to IDE based on the common interface.

jest-axe – Nick Colley

This accessibility testing tool integrates with Jest so that you can unit-test your components for their accessibility. I love that I only have to assert toHaveNoViolations at the container element. A word of caution though: this test does not guarantee your app’s accessibility.

People 💖

What Does Sponsorship Look Like? – Lara Hogan

I learned that, at a larger org, my access to opportunities (visible and impactful projects) matters as much as my ability to execute them. Without the opportunity, I can’t learn from experiences. Without the experience, few will offer the opportunity. Sponsorship, promoting others for the new opportunities, is a great tool to break that logjam. And I am deeply grateful to Lauren for giving me that chance.

Business 💸

Content, Cars, and Comparisons in the “Streaming Wars” – Matthew Ball

I always found how content accounting works strange. All content spends are treated as assets, and they are amortized over the same number of years when some turn out to be a dud right off the gate. The article reminds me that, even if accounting works mechanically, the quality of execution (talents, and IP) matters.