Young Reacts #127

For the last couple of weeks, I rarely wrote code and instead focused on the bigger problems: crafting a vision and driving cross-functional projects. Unfortunately, I started losing the sense of progress as these complex projects happen over multiple quarters, not in hours or days. So I spent last Thursday and Friday coding a bit, and I felt so much better afterward.

If I want to tackle important and difficult problems, I need to learn how to stay motivated without daily dopamine hits from coding. I will bring that up with my manager tomorrow and seek advice.


Software Engineering ⚙️

GraphQL WG Notes – May 2021

I went to my first industry-wide working group meeting last week. I was both excited and nervous about being in the same room with the folks like Lee Byron and Benjie Gillam. Being recorded didn’t help either. But the great news is that the group fully recognized the problem the nullability proposal tries to solve and advanced the proposal to Stage 1.

Announcing Rome Tools, Inc.

Rome, started by the creator of Babel, plans to be the one toolchain to solve all your frontend development needs. Now it has a backing company. It’s unclear how they plan to make money yet.

People ❤️

Strategic Prioritization Using Even Over Statements

Prioritization isn’t about a choice between the good and the bad. It’s about a choice between two different good options. If we aren’t ruthless, we will end up with a wishlist, not a priority list.

Is it a bad job or just a bad day?

Until I got my green card recently, I never had the liberty to quit whenever I wanted. So I am struggling with what conditions warrant a job change. “🧩 The Future Alignment Lens” from the article helped clarify my thinking, especially this question: “Am I spending my time on activities (coding, designing, selling, etc.) that I want to master?”

Caring Makes or Breaks an Engineering Organization

The term “caring” seems to be the equivalent of “engagement.” But I prefer the former since it is much easier to picture what it means. We need to see if we care about our company, co-workers, and ourselves.

How angry Apple employees’ petition led to a controversial new hire’s departure

One can’t insult half the population and expect to have no repercussions. One must own up to it or own the circumstances.

Business 💸

South Korean internet giants battle for top spot in web comics

Webcomics in Korea has been a source for many compelling IPs; many hit movies and TV shows such as Along with the Gods, Kingdom, or Sweet Home are based on webcomics. Creating a new IP used to be a risky investment. But the open webcomics platforms turned it into a business opportunity.

Young Reacts #126

I mentioned a few weeks ago that I wrote a vision document for a cross-functional effort. I had a chance to get feedback on the vision from my org’s VP last week. I sought tactical advice on how to socialize, but he instead gave a thought-provoking perspective; he asked why we UI engineers still need to be responsible for setting up the correct data access. Why can’t our backend engineers who own the domain do it?

Trying to answer why, I could find several practical reasons why we couldn’t make that big jump in the next one or two quarters. But I never envisioned what the ideal state should be, and I appreciated the nudge. This conversation reminded me of the article Director to VP Engineering: what is expected and how to prepare? which emphasized the longer time horizon executives operate at.

Software Engineering ⚙️

Thinking in Relay

A key difference between Relay and Apollo, two most popular GraphQL clients, is that Relay uses Fragments to describe the data requirements. Apollo, on the other hand, is far more lenient on how you fetch and use your data. I’ve been learning Relay to prepare for the query level nullability proposal.

Sucrase: An alternative to Babel that allows super-fast development builds

I tried moving my app to Vite.js recently and couldn’t finish migration due to a bug in Vite’s monorepo handling. I am hopeful that Sucrase could provide an easier migration path by working with my existing webpack config.

Solving a Mystery Behavior of parseInt() in JavaScript

This article wasn’t useful but still fun to read. When parseInt gets a non-string input, it first converts the input into a string and then parses it into an integer. That explains why parseInt(0.0000005); returns 5.

People ❤️

Being Experienced Doesn’t Automatically Make You a Great Mentor

I’ve been asked to mentor a colleague on his technical skills. This article reminded me that I shouldn’t pretend to be the expert on everything (when I do that, my frustration over my lack of knowledge comes out).

Business 💸

96% of US users opt out of app tracking in iOS 14.5, analytics find

When users opt out of app tracking, many platforms will have a hard time retargeting and measuring performances. The previous opt-out number was around 30% and now it’s 96%. How will Google and Facebook ads perform after more users upgrade to iOS 14.5?

What Roku and Google are fighting about: Video codecs, voice search and millions of eyeballs

Roku and Google have been feuding publicly over the availability of Youtube TV on Roku devices. The article explains the likely motivations for both companies.

What Is an Entertainment Company in 2021 and Why Does the Answer Matter?

The answer: Create/tell stories, Build love for those stories, Monetize that love. And you need to meet your fans where they are: comics, TVs, theaters, phones, or even metaverses.

Young Reacts #125

A colleague asked me last Friday if I have any memo-writing tips for him after reading my memo. It was a major milestone for me. I had not read or written a memo before joining Netflix, so it took a while to get used to our memo-writing culture. After two years of reading many and writing a few, I am glad to have someone who wants to learn from my memos.

Unfortunately, I didn’t have a great tip to share. I talked to many others who care about the topic, put a lot of time synthesizing the conversations, and distilled it into two pages. Some flair may help but the clarity of the writer’s thinking ultimately decides the quality of the writing.

Photo by AbsolutVision on Unsplash

Software Engineering ⚙️

RFC: Query Level Nullability

I co-authored a new syntax proposal to GraphQL, which the main author will present at this month’s GraphQL Working Group. This will be my first meaningful open-source activity.

corepack will be part of Node.js by default.

In this vote, Node.js Technical Steering Committee decided to include corepack as part of Node.js. corepack is a library to enable package managers other than Node.js to work “natively.” This change will allow newcomers to experiment with yarn or pnpm much easily.

Localization vs. Internationalization

I learned last week that internationalization is different from localization. Per W3C, internationalization practices are “design and development practices which allow such a migration to take place easily in the future but which may have significant utility even if no localization ever takes place.”

People ❤️

Changes at Basecamp

The founder CEO of Basecamp publicly posted a blog on a list of policy changes. The most controversial was the ban on political discussions. I said this when Coinbase implemented the same ban, but I will repeat this: silence is a privilege and a political act.

How to Mentor Someone Who Doesn’t Know What Their Career Goals Should Be

I read this HBR article to prepare for mentoring at work, but I learned something more important: our career paths are no longer linear. The term “career path” is outdated as everyone needs to make their own path.

Young Reacts #121 – My 360 Feedback

I had gotten feedback from six people last week, and I’d like to share them here and what I plan to do about them.

The positive feedbacks:

  • I care about business goals and provide valuable feedback on our projects to meet the goals.
  • I maintain strong relationships with partners. My partners trust me to deliver what I committed.
  • I bring new technical ideas from my participation in working groups.
  • I promote the voices of the newer and the less vocal colleagues.
  • I reflect on my work often and make necessary adjustments.

The constructive feedbacks:

  • Pursue more opportunities to share ideas and lead in our product domain. Two shared this feedback. I provide plenty of feedback on others’ ideas, but I don’t proactively develop new ideas.
  • Better communicate what I am working on. As I spend more time on working groups, I’ve failed to communicate my lower bandwidth to my product partners.
  • Pay more attention to the details and the user flow. I see this related to the above feedback. I’ve rushed features as I have less time, and it shows.

I haven’t talked to my manager about all this feedback, but here are my current takeaways:

  • I’ve leaned heavily into engineering-focused projects, such as feature flags, so far. I should start focusing more on my product domains and suggesting new projects (say, implement a no-code tool for admin tools).
  • My partners have been very supportive of my “extracurriculars.” So when I don’t have time for that, I need to say so. Once we hire a new engineer for my squad, this conversation will get easier.
  • Keep being empathetic and introspective. Maintaining my emotional capacity will be key.

Software Engineering ⚙️

Announcing the Deno Company

Deno, an alternative server-side Javascript runtime, has received funding and formed a company. The announcement snipes at the Node Foundation and then shares its vision for web-first abstraction layers, where web developers can reuse their skills in other domains.

GraphQL Mesh

GraphQL Mesh is a library that automatically generates a working GraphQL API based on other strongly typed APIs such as gRPC. It’s not just GraphQL Mesh; many tools try to solve the pain point. But I am a huge skeptic. The main benefit of GraphQL is in providing an excellent client developer experience, and these tools seem to optimize for the wrong audience, the graph producers.

The Complete Guide to useRef() and Refs in React

I wasn’t aware that updating a reference doesn’t trigger a component re-rendering. That one nugget was worth my time reading the article.

Business 💸

Implications for cookiepocalypse

The situation is complicated and fascinating.

Third-party cookies have been used to track users across websites, but they will be sunset next year on Chrome (other browsers already blocked them). This change, known as cookiepocalypse, has pushed the Adtech industry to start “fingerprinting” users with other signals and store the user identities on their ends, not on users’ devices. Users won’t have any control over their identity at this point. So Google is coming up with a new, less bad solution called FLoCing, which has its own privacy and business concerns.

More companies announce the office reopenings.

More than 25% of the US population are fully vaccinated, and more companies announce reopening plans. Amazon, Microsoft, and Google will eventually require everyone to be back in the office.

Young Reacts #117 – It Can Happen to You

I was pleasantly surprised to receive my green card (permanent resident card) in the mail this week. When I look back at my past nine working years, there wasn’t a time when I was free to look for another work or quit. For the first four years and the last two years, I was on my work visa in the US. While I was lucky to get one in the first place, being on a visa meant my job change would need to get reviewed and approved. A bad legal misstep could kick me out of the country, and I wasn’t comfortable risking it.

Even when I was in Korea, I worked to satisfy my civic obligation instead of active military duty. Again, my job change would mean a round of reviews and approvals. If I had quit my job then, I would have been drafted into active duty.

So the freedom to work wherever and quit whenever brings me a fresh feeling of freedom. I am now truly free to work. I look forward to what I can do with this newly earned freedom.

Welcome Packet from USCIS

Software Engineering ⚙️

It Can Happen to You

Grand Theft Auto Online, a popular online game, had a long-standing, slow loading time. The internet recently discovered that two simple fixes could make a 70% improvement. It’s easy to blame the issue on whoever wrote that code. But a senior software engineer ought to be able to see that they can make the same mistakes too.

Nullability in GraphQL

Whether to mark a field nullable or not has been a contentious topic internally. I believed that fields should be marked non-null if their values should always be defined in business logic because non-null fields are simpler to handle. However, I recently learned that in our federated GraphQL architecture, a non-null field could make a query less resilient to a service failure. So we recently agreed to mark all fields as nullable by default.

Your Linux processes are already “containerized.”

While I’ve used containers and serverless extensively for stateless applications, I felt uncomfortable using them for databases. This article explains that PostgreSQL in a container is not too different from one on a Linux system in how it can go wrong: OOM killer, Storage, Restarts and “in motion,” and Custom Deployments. Link

People ❤️

Don’t create a sense of urgency, foster a sense of purpose.

At big and small companies, I’ve seen the chaos created by the sense of urgency. When we have a deadline lording over us, we stop questioning the basic premise of projects. Not only the sense of urgency fails to maintain the throughput in the long term, but we will also fail to build the right thing. If it’s worth building, it’s worth thinking through.

Taming the Mammoth: Why You Should Stop Caring What Other People Think

My mammoth is that I want to be recognized at work and by my social circle. But I am not sure if I really want something else.

Business 💸

Clubhouse Is Suggesting Users Invite Their Drug Dealers and Therapists

Dark Patterns are defined as “tricks used in websites and apps that make you do things that you didn’t mean to, like buying or signing up for something.” It’s far more prevalent in consumer-facing applications since consumer data is where they make money. As part of their growth tactic, Clubhouse aggressively goes after its users’ contacts and makes suggestions, even if the contact belongs to a blocked harasser.

Young Reacts #116 – What the heck, z-index??

As I am doing more discovery work recently, I’ve been practicing to think more granularly. Most situations do not have binary on/off states, and the optimal solution can be found when we recognize the complexity and lean into the details. As I talk to my users, I find the common traits and categorize them into a few buckets, such as early adopters, majority, and laggards. It’s not exactly rocket science, and I am not a UX expert, but it already changed how my team views a problem.

In practice, while we are building an internal GraphQL system for UI engineers, I’ve learned that each engineer has different levels of expertise and needs. Some are on the bleeding edge and keep pushing us for more features, while some need more education and onboarding support. With this clearer understanding of my user personas and their needs, I can focus on overlooked opportunities, such as improving tutorials and documentation for newcomers.

Photo by Nicolas Brulois on Unsplash

Software Engineering ⚙️

What the heck, z-index??

I’ve worked as a frontend engineer for the last 9 years and still get baffled by the z-index. This article goes deep into how z-indexes work. I didn’t know that z-indexes are only used when the elements are in the same stacking context.

React’s children prop won’t cause rerendering if the children didn’t change.

This was quite surprising for me. I expected that since React’s JSX syntax returns objects, the children prop always fails equality checks and triggers rerendering. Apparently not. React’s rendering behavior still surprises me. Blog Link

Use GraphQL Fragments

If you started using GraphQL with Apollo Client, you probably don’t use Fragments as often as you should. Fragments make reusing and accessing nested types easy, which can be painful with nested nullable fields. Blog Link

People ❤️

The Behind-the-scenes Work of Tech Leadership

The ability to sell an idea becomes more important as we progress in our careers. That means we need to tailor our pitches based on the audience. When we talk to the executives, we need to speak in business terms. When we talk to other engineers, we need to speak to their pain points. The term “tech leadership” makes it look hard, but the leadership really comes down to communication and persistence.

Business 💸

Community perspectives on Elastic vs AWS

I recently heard this podcast that interviewed people in the open-source business about Elastic’s SSPL license change. I expected to hear a more sympathetic tone, especially from those leading open source companies. But I was surprised to hear that they essentially saw the license change as the last-ditch response to a failed differentiation.

Cool things I found 🕶️

10 Years of Open-Source Visualization

D3.js was the first library to introduce visualizations to the mainstream internet. Not only that, it was the first library I learned at my first job. The library is now 10 years old, which makes me reminiscent.

Falsehoods Programmers Believe About Names

My team recently had a heated discussion on whether we should separate the existing “name” field into two “first name” and “last name” fields. I was adamantly against it because I know firsthand that not all names neatly fit into the two fields. The post goes deep into other wrong beliefs about names.

Young Reacts #115 – How to Pick a Product Hypothesis

Not much from me this week. Enjoy the last week of February! 😁


Software Engineering ⚙️

GraphQL Input Union is back to OneOf directives

GraphQL’s Input Union has been in the works for a long time. The first proposal was in early 2018. At this point, a lot of GraphQL users just want a solution, and I hope this proposal is it.

An interesting fact: OneOf directives are currently proposed to be applied against input objects and fields, but they could be used for the return types too. The spec working group intentionally scoped down the proposal to proceed quickly, but we will see the expansion of OneOf directives in the future. OneOf RFC Link

People ❤️

Unpacking Interview Questions

This collection of articles explains what the author looks for when asking typical behavioral interview questions such as The Weakness Question. He thoroughly discusses his motivation behind the questions, the evaluation criteria, and the typical follow-up questions, which gives the interviewees a behind-the-scenes look. I recommend reading this series if you are recruiting now.

How To Measure Engineering Effectiveness

My approach to my team’s effectiveness has been limited to “I know it when I see it.” I found it hard to assess the quality and the quantity of my team’s contribution when we are part of a larger system (product managers, designers, and other stakeholders). Measuring and getting rid of the blockers sound like a solid approach to measuring the team’s efficiency. But it still doesn’t answer if we are building the right thing. Blogpost Link

Google Fires Researcher Meg Mitchell, Escalating AI Saga

Google had suspended another AI ethics researcher, Meg Mitchell, when they fired Timnit Gebru. After weeks of investigations, they fired Meg Mitchell. Talking up diversity is easy but following through with accountability is hard. Google has done some remarkable research on psychological safety, so I am not writing it off completely, but it has lost a lot of my respect.

Business 💸

How to Pick a Product Hypothesis

Coming up with a good hypothesis for a new project is half the battle. A good hypothesis is falsifiable, measurable, and actionable. The article then gives examples of good and bad hypotheses. This article was a recommended read for an internal workshop on hypothesis thinking.

Google made a deal with Rupert Murdoch. Facebook called the bluff.

New Australian law enforces Google and Facebook to pay the news publishers to use their links on their services. Google first threatened to leave Australia (Bing selflessly offered its service in response) but cut a deal with Rupert Murdoch’s News Corp. Facebook decided not to show any news in Australia. Now the small independent outlets are squeezed between the tech and media giants. News link

Young Reacts #113 – Engineering Personas

The term “soft skill” implicitly undervalues interpersonal and communication skills. But these skills are in short supply and become more important as we progress in our careers.

Software Engineering ⚙️

GraphQL Schema Stitching is coming back

Schema stitching was once declared deprecated, but it has come back from the dead. I acknowledge that federation needs some complex tooling like schema validation to work well. But I am still skeptical of schema stitching. I remember that schema stitching suffered from schema merge conflicts (i.e., when two schemas define types with the same name). After looking at the doc on merging, I still see the same problem. Link

People ❤️

Engineering Personas

We are more than just “human resources.” Everyone has their preferences and aspirations, which hiring managers should consider when hiring. The article buckets engineers into five categories. While I think these categorizations are helpful when hiring, we should beware of biases and expect that people grow and change their personas. Link

AWS Compensation Explained

I was just baffled at how unintuitively the compensation works at AWS. Read the article if you are considering joining AWS. Link

Business 💸

Ethereum’s Carbon Footprint

The author researched the carbon footprint of Non-Fungible Tokens, the tokens used to create a limited number of digital goods. He found that a single transaction of an NFT produces 47 kg of CO2 on average, which is equivalent to driving 500 km. It is mindblowing. I never saw blockchain technology from this perspective, and I thank the author for his research. Link

Twitter’s New Peer Review System

On top of its existing review and recommendation system, Twitter launched a peer review system for less prominent tweets. Humans being humans, I am not sure how the system will perform for divisive tweets. I like that all generated data will be publicly available, providing visibility into the system’s vulnerabilities. Link

Young Reacts #105 – @defer and @stream Directives

My mandatory 14-day quarantine finished last Friday. I went out to Seoul, and it was a bit surreal to be around that many strangers. Then I realized it had been more than 9 months since I was anywhere near a crowd. 2020 has been weird and challenging in a deadly way. I hope 2021, with vaccines arriving, is much better.

Photo by Adam Chang on Unsplash

Software Engineering ⚙️

Improving Latency with @defer and @stream Directives – Rob Richard, Liliana Matos

With GraphQL, it is so easy to craft a query that fetches megabytes of data. Large queries like that increase the server response time and slow down client apps that need to parse the response. The new @defer and @stream directives enable fetching a type or a list in a piecemeal fashion.

What’s new with Apollo Client v3 and GraphQL Codegen – Dotan Simha

GraphQL’s true power is in its tooling ecosystem. Dotan Simha, the popular GraphQL Codegen library creator, discusses four plugins that you can today. I plan to adopt @graphql-codegen/fragment-matcher and @graphql-codegen/typescript-apollo-client-helpers this week.

Finding Critical Open Source Projects – Google Open Source Blog

Google Open Source team created a way to rank the importance of open source projects based on the related metrics. I was a bit surprised to find that React Native was ranked higher than React.

People ❤️

Standing with Dr. Timnit Gebru – Google Walkout For Real Change

The controversy around the firing of Dr. Gebru is gaining more steam even as Google CEO Sundar Pichai promised an investigation. The lack of transparency even for the internal folks is jarring.

Evolution of my role as a founder CTO – Miguel Carranza

Miguel Carranza, a CTO of a Series A startup, shares his journey from a two-person company to a team of 19. He is now transitioning from being a technical contributor to an engineering leader. I like that I got to hear a rare story of a non-CEO cofounder.

Business 💸

Announcing Workplace Records for Cloudflare for Teams – Cloudflare

While the idea of remote working from anywhere is liberating, it does make legal and tax problems for the employers; some jurisdictions require you to pay local corporate taxes if your employees work there. That creates a need for a tool like Workplace Records, which tracks where your employees are working.

Death of an Open Source Business Model – Joe Morrison

A popular map rendering library, mapbox-gl-js, just turned proprietary like Redis or MongoDB. Given that the cloud providers all keep adding new features to beat the competition, the venture-backed open-source companies have to figure out how to differentiate.

Young Reacts #103 – Sending gifts to future-you

Over the weekend, my wife and I traveled to Korea for my sister’s wedding. We’ve been ordered to quarantine at home for the next two weeks. This experience has opened my eyes to how a government can use technology and bureaucracy to surveil its population (of course, in this case, it is for the better).

When we entered Korea, we were asked to install an always-on tracking application and register our information (including our identification numbers, phone numbers, and address where we will stay to quarantine). The airport agents then checked that we actually installed the applications and even called our contact on file to ensure we were reachable. Now, for the next two weeks, we have to enter our self-diagnosis three times a day into the application. If the application detects our GPS signal is off or not at the said address, we get calls from the agents right away. In the meantime, we get multiple emergency alerts about confirmed COVID cases in our city.

The combination of technology and bureaucracy is impressive, especially compared to the US’s response so far. But it is just as scary when I think about its possible misapplications.

Photo by Rohan G on Unsplash

Software Engineering ⚙️

Summary of the Amazon Kinesis Event in the Northern Virginia (US-EAST-1) Region – AWS

AWS suffered a long outage last week, impacting a variety of services such as Coinbase. Due to complex dependencies and latent issues, a simple act of adding more servers triggered cascading failures across different services for almost a full day. I appreciate that this summary is both detailed and honest.

GitHub Actions vs CircleCI – Kim Gault

I haven’t used GitHub Actions since my team has Spinnaker and Jenkins to do our continuous integration. So I found an article on the capabilities of Github Actions. tl;dr is that GitHub Actions is a good alternative to the more established services like CircleCI.

GraphQL Terminology – Cheatsheet – Ido Shamun

Do you wonder what a mutation, a directive, or a federation means? This cheatsheet is all you need.

People ❤️

Sending gifts to future-you – Tanya Reilly

Our “planning” (for our team or ourselves) often devolves into just listing what we planned to do anyway. But the right approach is to imagine ourselves in the future and figure out what we would wish we’d invested in. Like a 🎁

What did I forget by working for the same company? – Jaana Dogan

Jaana left Google because she no longer felt she knew where the rest of the industry was going. I fear that I will feel the same if I stay at Netflix for too long. I need to make sure that I can be productive outside Netflix’s internal infrastructure.

Vidyard: From sales-led to product-led and how it changed everything – Ashton Rankin

A business model affects more than the marketing and sales organizations. It changes how your product teams prioritize and how your engineering teams interact with the customers. This account gives a good view of how a business model change (from enterprise-sales to freemium) led to a full company transformation.

Business 💸

Microsoft’s Phil Spencer on Launching the New Xbox and the Future of Games – Phil Spencer

Two notable quotes from the executive vice president of gaming at Microsoft:

“Now, as you said, a TV is really more of a game console stuffed behind a screen that has an app platform and a Bluetooth stack and a streaming capability.” -on TVs as a gaming platform

“I want third parties to see the distribution and monetization capability of Game Pass as something that is accretive to their business and important to them.” -on Xbox’s platform strategy

Are you a seal? – Benedict Evans

Startups often worry about how to fight the big tech companies off their turfs. So did my teams. But the right question is, if and why they would enter your market?