Young Reacts #124

Even in this virtual working environment, I choose to go to most all-hands meetings. The presentations are recorded and made available after, and I can watch them at 2x speed later. But I go to join the live Q&A at the end. If I miss the live Q&A, it’s cumbersome to ask questions and get an answer on a presented topic.

I will suggest to my VP that speakers prerecord their talks and make them available for a week before and host a live Q&A session.

Photo by Gabriel Benois on Unsplash

Software Engineering ⚙️

Product Vision vs. Mission

I’ve been on a strategy kick. I am creating a vision for a large cross-functional project at work to align and excite my partners and build a coherent roadmap towards the vision. Then I was confused by how abstract the vision should be. This article clarified that the vision should describe the future customer experience. The examples linked from the article also helped explain the difference (I particularly liked Asana’s and Airbnb’s).

Understanding TypeScript’s Popularity

At this point, every JavaScript project seems to be migrating to TypeScript (except Facebook with its Flow language). Even Chrome Dev Tool is now in TypeScript. An engineer on the TypeScript team recounts the language’s history and points out two key enablers: emphasis on incremental value and close collaboration with the rest of the ecosystem.

JavaScript Labels and Returning Early

JavaScript labels with the break statement are like the goto statement in C. It was fun to learn about this feature in JavaScript. But I don’t recommend using it in your code. goto statements are notorious for their bad readability.

People ❤️

The Feynman Technique Can Help You Remember Everything You Read

I read a lot. But I find it upsetting that I don’t retain as much as I would like. The author says we need to recall and summarize after reading to make it stick. Copy-pasting the highlights doesn’t suffice.

“Asynchronous” Working In 2021

Even though I don’t use recorded video messages for 1-1 communication like the author, I agree 100% that video recordings are great. It’s been great to rewatch the recordings to ensure I understood everything and follow up with action items.

Director to VP Engineering: what is expected and how to prepare?

It was interesting to read how these leadership roles differ. Two differences: a VP plan over a longer time frame of 2-5 years and a VP should not be domain-focused but business-focused.

Business 💸

Amazon 2020 Shareholder Letter

Jeff Bezos sent out his last shareholder letter as the CEO of Amazon. In addition to the current mission, Earth’s most customer-centric company, he shared two new missions: Earth’s best employer & its climate pledge.

Young Reacts #122 – Return to the office

Netflix has announced that most of us will be expected to be back in the office after September 6. We finally see the light at the end of the tunnel.

An interesting fact: during the pandemic, my team has become much more distributed. Before the office closed, only one worked out of LA, and the other eight were in Silicon Valley. When we return to the office, only two will be in the Valley, and the others will be in LA, Georgia, and Canada. We are even hiring in Mexico City. I doubt I need to be in the office at all.

Photo by Dane Deaner on Unsplash

Software Engineering ⚙️

Eagerly discerning, discerningly eager

I’ve been working on an internal API and gotten contradictory feedback at times. This article clarified why. An API needs to serve two types of developer users: those eager to solve their problems and move on and those who want to dig deep.

Sending gifts to future-you

I shared this article before, but I read it once again as my organization is updating our strategy bets for the next couple of years. It will be important to have a forward-looking perspective.

Announcing TypeScript 4.3 Beta

Like a clockwork, Typescript 4.3 is here. I like these quality-of-life improvements: @link tags for better documentation, an explicit override check, and #private methods.

People ❤️

Cut down on reports with the 5-15 method

A 5-15 method is to write a weekly report that takes less than 5 minutes to read and less than 15 minutes to write. It discusses wins, roadblocks, and plans. This looks like a lightweight tool to share more context with my colleagues.

Some rough notes on running learning circles.

I used to run a learning circle three years ago where I met the most interesting people in the industry and learned to articulate my thinking clearly. I’ve been thirsty for that kind of opportunity and am thinking of starting a new one in my organization.

Business 💸

Google’s FLoC Is a Terrible Idea

I researched more about FLoC I shared last week and found this scathing criticism from The Electronic Frontier Foundation (EFF). The EFF points out that FLoC will aid fingerprinting, expose more information to websites than a user needs, and opaque ad targeting.

Supreme Court sides with Google in Oracle’s API copyright case

This old lawsuit over Android’s use of Java API was finally concluded this week with Google’s win. This lawsuit paves a clear path for businesses such as Amazon’s DocumentDB (which maintains API compatibility with MongoDB).

Young Reacts #109

I am back from my trip to Korea and will be back to work this week. I am mildly excited to work again, which shows my vacation was long enough. My year begins now!

Photo by Zoltan Tasi on Unsplash

Software Engineering ⚙️

The State of CSS 2020 Report

My two takeaways:

  1. Tailwind CSS (now with Tailwind UI components) is the thing to learn.
  2. Utility CSS classes are not a minority opinion anymore.

Link

Leveraging the TypeScript API to find issues in your code

I didn’t expect that writing a script to look at Typescript’s syntax tree could be accomplished under 100 lines of code. Something for me to try when I have tedious, mechanical refactors in the future. Link

GitHub’s WebGL Globe

GitHub launched its cool looking website with a 3D globe, visualizing Github’s activity. This article explains the visualization code line by line. Link

Iterating over iterable JS objects

During my phone screens, I see even senior candidates struggle with iterating over an object. It would be a good idea to brush up on iterations if you can only come up with forEach when you read this. (Spoiler: use for-of) Link

People ❤️

Would you discuss politics at work?

This week was marked by a series of challenging political events in the United States. Some workplaces ban the conversation around politics to avoid the pitfalls. But I personally believe acknowledging the stress on all of us and providing the space to process our feelings are the best course of action. Link

Learn to deal with uncertainty

As an engineer, I am used to immediate and clear feedback; I wait for 10 minutes, and automated tests accept or reject my work. But when I discuss long-term product roadmaps or lead cross-functional projects, there are no such mechanisms. This article helped me understand why I struggle with those high-level discussions: fewer constraints, longer feedback loops, and more high-stake problems. Link

Interviewing for Engineering Manager

I am thinking of returning to engineering management in the next year or two. Since it will be quite a big shift, I started looking at what companies look for from their engineering manager candidates. This is from Reddit. Link

News 📰

Twitter bans Trump

Twitter finally bans Trump’s account from the service after Trump used the service to encourage his supporters to storm the Capitol. I am glad that Trump won’t be able to use Twitter to seed confusion and incite violence. But Twitter is not the only social network, and other services still enable these extremists. (The alternative Twitter-like service is now suspended from app stores for the lack of content policing)

A society can’t leave its safety up to the few tech execs. The only proper way to censure and contain Trump will be through democratic institutions. Link

Young Reacts #106 – What do I want from my career and my life?

I had a bit of a crisis last week. On my bed lying, I realized that I would be almost 50 in 15 years. I don’t have as much time as I thought I would (you may say 50 is the new 40, but I don’t buy it). So I am spending this holiday season contemplating where I want to be and identify the specific areas I need to improve. These are the questions I’ve been thinking about:

  • Do I continue down the technical path or return to management? Which one will I be better at?
  • Do I keep working at Netflix or move (I told myself that I would work here for 5 years)? If I do move, then where?
  • Most importantly, what do I want from my career and my life?
Photo by Zac Harris on Unsplash

Software Engineering ⚙️

Measuring app stability to reduce technical debt – James Smith

I always found it hard to create a metric for UI app stability. Two suggested metrics look like a good starting point: “a percentage of successful application sessions” and “a percentage of daily active users who do not experience an error.”

The Import On Interaction Pattern – Addy Osmani

This article contains a list of useful performance tips if you are building a large application. As my team plans to build micro frontend components next year, these tips will come in handy.

ts-morph – David Sherret

ts-morph is a wrapper library to help manipulate Typescript’s abstract syntax tree. This is useful if you need to update some Typescript code automatically.

People ❤️

Simple Burnout Triage – Ben McCormick

One simple question to self-check if you have burnt out:

If you take the pace & quality of the last 2 months of your life and repeated it again and again, how long would you be able to sustain it?

A better offer letter – Henry Ward

Lack of transparency around a startup’s preference stack bites employees in less-than-ideal exits. I am not sure if Henry Ward’s own company Carta still does it (the post is from 2016), but this transparency level should be the norm.

Reimagining Employee Productivity in 2021 – Sabry Tozin

Now that we survived the year of the pandemic and normalized remote working, what’s next? A VP of Engineering at LinkedIn shares his perspectives. I especially liked his point that “[e]very professional interaction we have in this new world is scheduled, and this is not how we’re accustomed to work.”

Business 💸

Roku Torments Entertainment Giants in Quest to Dominate Streaming – WSJ

As the streaming market becomes more competitive, the device makers’ power is increasing. Roku is leading the smart TV market and throwing its weight around.


Young Reacts #99

In the US, the daylight saving time ended over the last weekend. The start and end of daylight saving time reminded me of when I was working on data visualizations.

If you store and render the data in UTC, you can safely assume that every hour exists. But that’s not true if you want to represent the data in timezones with daylight savings. I remember that our visualizations would break because 2 AM is missing when the saving time ends (you also get two data points for the same hour when the daylight saving starts). It’s a funny reminder that even seemingly absolute things like time can’t be relied upon in programming.

Photo by Ocean Ng on Unsplash


Software Engineering ⚙️

ts-prune – Nadeesha Cabral

While code linters can automatically detect unused variables inside the modules, it has been very time-intensive to find unused modules; I manually global-search exported variables (it gets much, much worse if the same names are used for different variables). This CLI tool promises to automate that process.

Why Rounded Corners Are Easier on the Eyes – UX Movement

Have you wondered why your designer always round corners? Here are your answers: First, sharp edges make the object look brighter and harder to look at. Second, we are raised to avoid sharp objects in the physical world. And last, smoother paths make it easier to process the information.

Myths about useEffect – Kent C. Dodds

I started using hooks as soon as they’ve become available. However, I still learn every day. In this article, I found the shift in perspective from “when does this effect run” to “with which state does this effect synchronize with” illuminating.

Rebuilding Twitter’s public API – Twitter

Twitter is building its public REST API with a GraphQL backend. In other words, if you hit their REST endpoint, they translate your request into a GraphQL request to an internal GraphQL endpoint. I am most curious about how Twitter develops and maintains the internal GraphQL schema for both consumer app use cases and the REST API use cases.

People ❤️

Career ladders aren’t enough – you need a thoughtful promotion process, too – Sarah Milstein

If a company leaves the personnel decisions solely up to the managers, it is hard for employees to see that the process is fair. The process needs an explicit and well-understood structure to justify its decisions.

Business 💸

How Riot created the virtual universe of the 2020 League of Legends World Championships – Polygon

Because of the current pandemic, much of the League of Legends world was held in a closed space without live audience. To create a dynamic stage suitable for the competition of this level, Riot Games used the virtual studio based on Unreal Engine, also used by The Mandalorian. I very much look forward to how this technology will change film productions.

NVIDIA Announces Cloud-AI Video-Streaming Platform to Better Connect Millions Working and Studying Remotely – NVIDIA

Instead of saving bits with more efficient compression, Nvidia saves by regenerating the image with AI on its cloud platform based on a few key points. It is most useful if your upload bandwidth is limited. Here is a link to the demo video.

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 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.

Young React #81 – Being Responsible For Other Lives

My wife and I decided to foster two kittens for the next five weeks. We didn’t make the decision lightly. But as we drove home with the kittens, it dawned on me that this would be the first time I am responsible for other lives.

Since fostering is short, it is not the same as adopting pets, or, much less, having kids. Nonetheless, I feel the pressure and responsibility. I have to feed them regularly, give them medications, and socialize them so that they will find a caring permanent home. To fulfill their needs, I had to adjust some of my routines and tolerate getting disturbed while working.

After a few days, I realize I never fully understood what working parents struggle with: new priorities, daily distractions, and energy drain. I knew it with my head but never felt it myself. This is another reminder that genuine empathy is hard without actually experiencing something similar.

Meet Jelly and Boba 🐈❤️


Software Engineering 🌐

Announcing TypeScript 4.0 Beta – Daniel Rosenwasser

Even though the major version changed from 3 to 4, there are no significant breaking changes. There are additions to type systems like variadic tuple types and labeled tuple elements, and developer experience improvements. I especially look forward to partial editing mode since my project already takes too long to start up.

Variadic tuple types – Anders Hejlsberg

If you were intimidated by the term “variadic tuple types,” I was, too. This PR to Typescript goes deep into what variadic tuple types are, and how it will work in Typescript. In short,

A variadic element is a spread element of the form …T, where T is a generic type constrained to any array or tuple type (specifically, any type that is assignable to readonly any[]).

People ❤

Written communication is remote work super power – Snir David

We need to consider several factors when we think about asynchronous communication: first, the purpose: are we transferring knowledge or creating new? Second, the scope: are we communicating within or without our team? Third, the feasibility: can our team meet synchronously? Depending on the answers, synchronous communication will be preferable. But I agree with the article that we need to choose asynchronous communication more than we currently do.

Reflections on Being a Female Founder – Tracy Young

Before joining Netflix, I had an offer from PlanGrid, the company she founded. So I watched her TechCrunch interview from 2015, in which she disappointed with her lack of gender sensitivity. I love that she courageously, and publicly admits her faults, and shares her learnings.

Business 💸

The Global AI Talent Tracker – MacroPolo

A quantitative argument for allowing more mobility across borders with a beautiful visualization. More relevant now than ever, in the light of the US ban on working visas.

I just hit $100,000/yr on GitHub Sponsors 🎉 – Caleb Porzio

This article is a cool story of how a freelancing developer grew his Github Sponsorship. Most of the sponsorship came from private videos, which means his value proposition was more similar to a paid newsletter or a paid podcast than Patreon.

Good Questions, Real Answers: How Does Facebook Use Machine Learning to Deliver Ads? – Facebook

A short but helpful article on how Facebook’s programmatic ad bidding works.


Young Reacts #71 – Crank.js, blurhash, Seniorless, and more

One benefit of working from home and the resulting lost sense of time is that every weekend comes very fast.

Photo by Djim Loic on Unsplash


Software Engineering 🌐

Introducing Crank – Brian Kim

The entire React lifecycle […] could be expressed within a single async generator function.

An interesting experiment to move away from pure functions in React framework to side effects with async functions in Javascript. It was quite astounding to see how component lifecycle methods nicely map to a generator function.

blurhash: A very compact representation of a placeholder for an image. – Dag Ågren

blurhash is easily the most exciting library I found this week. With just a pre-calculated short string (20-30 characters), you can create a beautiful placeholder image.

Versioning fields in GraphQL – Leonardo Losoviz

We can create our field with an argument called version, through which we specify which version of the field to use.

I never thought of versioning subsections of a schema with a version argument. However, I still expect that the work of defining a contract, communicating changes, and program-managing the changes will not go away. Because those are human problems, not technical ones.

Typing functions in TypeScript – Axel Rauschmayer & Augmenting Interfaces in the Global Scope in TypeScript – Marius Schulz

These two Typescript articles taught me two things I always get confused about: How to overload functions, and how to type the global scope in a type-safe way.

People

Seniorless — 5 Reasons You Should Hire More Juniors – Gabriel Grinberg

I was in similar shoes when I was leading a team at a startup. I didn’t have the budget to hire senior engineers, so I instead turned to junior engineers and developed them. Contrarily, I concluded after two years, if your project is time-sensitive, and needs less uncertainty, not more, you should consolidate the headcounts and hire fewer, more senior engineers.

Carta’s covid-19 layoff – Henry Ward

I don’t want to celebrate this article since a lot of people just lost their jobs. However, I do appreciate a CEO of a company taking full responsibility for the decision to lay off.

Business 💸

COVID-19 Global Impact Charts – Luke Wroblewski

An eyeopening set of graphics showing how our society has changed because of the pandemic. Would you have guessed we sleep more now that we don’t need to commute?

The third wave of open source migration – Donald Fischer

for any technology-driven organization that hasn’t embraced the reality that the modern application development platform is a polyglot mix of open source languages, frameworks, and packages: the time is now.

The calculations will differ by organization. The crisis probably put cost-saving at a higher priority. Eventually, it comes down to build vs. buy and tradeoffs between paying the price now vs. later, and immediate benefit vs. future flexibility.

Young Reacts #58

I joined a meeting this week where we discussed how to handle error states. And it was hands down the best meeting experience. The facilitator sent an agenda long before, took notes of discussions, spared plenty of time to create action items, and shared the summary of the meeting on the same day. It was a rare find even at Netflix. This meeting will be my standard going forward.

Photo by You X Ventures on Unsplash

People ❤

How to manage a program in a product-mode organization

Even in a transparent workplace like Netflix, achieving alignment across different teams is hard. The company and the orgs have a high-level strategy; but each team plans its roadmap autonomously, which often doesn’t consider interdependencies. This article suggests that cross-functional projects call for different organizing methods.

Software Engineering 

Code-wise, cloud-foolish

When I think about lock-ins, I often think about vendor lock-ins, such as AWS or JIRA. But my opensource tech stacks have lock-in effects as well (since I can’t easily change my code), and I should be mindful of it.

Copying data is wasteful, mutating data is dangerous

An enlightening thought that a function interface needs to be immutable, but the internal can use mutation for optimization.

A short Twitter Thread on Typescript type arguments

These couple of tweets explained so much about how Typescript’s type arguments work.

react-error-boundary

A handy library if you want to use hooks and error boundaries at the same time.

Business 

The ‘No Code’ Delusion

No Code is trending in the tech industry at the moment. Engineers are expensive, and products take too long to build. The article reacts to the movement. I liked the parallel between this generation of tools and the old drag-and-drop website editors, which failed to replace all UI engineers.