Young Reacts #250: Going on hiatus

After this 250th issue, I’m taking a hiatus from my weekly newsletter. I’ve loved sharing my thoughts and experiences with you. However, I’d like to explore other types of writing and want to step back from this newsletter for a while.

It meant a lot to me that so many people chose to read what I had to say every week. I thank you all for your support and readership.

Photo by Hans-Jurgen Mager on Unsplash

Software Engineering ⚙️

Bottleneck #01: Tech Debt

I keep reading about tech debt because my company is riddled with it. My key takeaway from this article was to provide the data when possible to engineers so that they can use their judgments.

Open Source composition and validation library for Apollo Federation

The Guild, another major contributor to the GraphQL ecosystem, open-sourced a library to replace Apollo Federation’s core library. Apollo Federation’s core libraries are using Elastic License, which isn’t an actual open-source license, as the license forbids Apollo’s competitors from using those libraries. The license doesn’t impact me or my team and won’t matter to most. But it still leaves a bad taste and leads to fractures.

People ❤️

Projects and Companies

Internal and external pressure often leads us astray, even if the pressure comes from the best intentions. As adults and professionals, we are ultimately responsible for our decisions and their outcomes.

Good Businesses Have Margin

This doesn’t just apply to businesses but also to our lives. It’s a blessing to have some slack in our lives. The slack affords us time and energy to take difficulties from a growth perspective. Which would be impossible if my life were to fall apart the moment I lost my job.

Quantity leads to quality (the origin of a parable)

An ample amount of deliberate practice will get us quality, even if our initial attempts look basic.

Business 💰

Dev Diary: Win Probability Powered by AWS at Worlds

I loved reading how statistics is applied to a complex game. It was also interesting to see that the resulting analytics, despite its name Win Probability, is descriptive (70% of the teams in this situation have won the game), not predictive (this team will win this game with the probability of 70%).

ChatGPT use shows that the grant application system is broken

ChatGPT is not just helping high school students with their homework. It’s also helping the PhDs with their grant applications.

Young Reacts #247

It is said that being good at a subject and being good at teaching that subject are two very different skills. I am experiencing this firsthand. When I try to teach a programming concept to a beginner, I find myself struggling to find the right words and getting frustrated. What makes great teachers great?


Software Engineering ⚙️

React-Google-Apps-Script

I wondered if it’s possible to build app extensions with frameworks like React, and this project showcases precisely that. I could even use Hot Reload with the addon loaded inside Google Docs. Kudos to the author who wrote clear and comprehensive documentation for the project. According to this article, we can use React within a Google Chrome extension, too.

UX Theatre: Are You Just Acting Like You’re Doing User-Centered Design?

This article made me reexamine how we work: are we talking to the real users as we build the product? We haven’t been. Have I been aware of it? Disheartening no. Sadly, I’ve gotten used to how we work based on top-down directives. The silver lining is that we instrument product metrics dashboards to check our assumptions.

Implementation-First GraphQL

I’ve learned quite a lot from Jordan Eldridge in GraphQL Working Group discussions (here is one recent example on GraphQL nullability), so I wanted to read his other work. Implementation-First GraphQL is a GraphQL server implemented using a typed language that generates GraphQL schema based on the return types of the implemented resolvers.

People ❤️

Private Chat and DMs Are Good, Actually

I’ve always believed that heavy usage of private channels and DMs shows mistrust in an organization. But this article made me reevaluate my stance. It also reminded me of a company that banned private channels and DMs, resulting in employees opting for personal messaging apps.

Business 💰

Unity announces its revamped pricing model

Unity addresses many concerns from the developers with an updated pricing model, but the broken trust will haunt them for a long time.

Terraform fork gets renamed OpenTofu, and joins Linux Foundation

Here is another case of broken trust: Terraform moved away from open source, which led to a community-maintained fork. The changed license makes it more costly for other companies to compete in the same market and makes the project slower to improve, potentially hurting the total addressable market. I am curious how it will play out in the long run.

Young Reacts #245

A bit of self-reflection: I spent much time planning and coordinating tasks between people on my project team last week and not much coding. Even though I believe that’s how best I can contribute to the team’s success, I worry that I am not spending time learning more about our codebase. I want to learn more about it because I feel like I am missing a lot of details, making my role in leading projects more challenging. I will make more time to take on tasks in unfamiliar areas and learn to navigate the hairy parts from now on.


Software Engineering ⚙️

Client Controlled Nullability: A path to True Schema Nullability

This write-up helped me see the tradeoff between schema expressiveness and execution resilience. Since GraphQL’s error-handling behavior cannot be customized to each client’s needs, the current best practice is to mark everything as nullable for maximum resilience. But when CCN enables that customization, the schema can express “true nullability.”

The Fall of Stack Overflow

Surprisingly, the traffic and the number of questions and answers have dropped by more than 35%. It’s not entirely due to generative AI since the number of posts decreased slowly since 2020. Are other communities, such as Reddit, Discord, and YouTube, taking over?

Use reverse-i-search to quickly navigate through your history

I cannot believe I haven’t learned this shortcut despite coding professionally for ten years. Because I find it difficult to remember long commands, I keep a list of those commands in a text file. This shortcut will save me at least 5-10 minutes every day.

People ❤️

Not posting a salary range? You may be losing half your applicants

I can attest to this result. When recruiting early this year, I preferred roles with salary ranges that matched my expectations and didn’t bother with those that were way below my expectations. Interestingly, I was more disinterested in postings without the ranges than those slightly below my expectations.

Business 💰

AI and the Job of an Amazon Seller

There are more than 2.5 million sellers on Amazon, and the tools continue to make launching a new e-commerce business easier. By commoditizing sellers, Amazon will maintain its dominant position.

Rise of AI newsbots shakes up India’s media landscape

An AI news anchor sounds scary, but I also appreciate that the AI can now deliver news in 75 different languages, which would be very expensive to produce for human anchors (not just the labor cost of the human anchors but also the production cost).

Young Reacts #244

I upgraded my PC’s graphics card over the weekend and almost lost the card because I didn’t know that power supplies and PCIe cables (the cable that transfers electricity from the power supply to a component) are not standardized. The cables all look like this:

Corsair 600W PCIe 5.0 12VHPWR Type-4 PSU Flat Ribbon Power Cable - Black -  Micro Center

But apparently, the wirings are different, so if you use a cable incompatible with your power supply, you may damage the connected component. This violates two UX principles. 1. Components that look alike should behave alike, and 2. Prevent user errors from occurring in the first place. Whatever business reasons the manufacturers have, they better be really good.


Software Engineering ⚙️

Measuring developer productivity? A response to McKinsey

As the tech industry goes into “the year of efficiency,” the engineering leadership can no longer skirt around the issue of engineering productivity. McKinsey has published a framework to measure developer productivity, which, thanks to its brand, has made quite a stir. This 2-part article is a response to McKinsey’s framework.

I loved this diagram from the article. It clarifies different levels of measurement. We need to be measured by outcomes (customer behavior changes) and impact (revenue generated, strategic positioning), and never by efforts and, rarely, by outputs.

Unleash the power of Fragments with GraphQL Codegen

Since Relay’s fragment-first approach has proven to stay performant and type-safe at scale, other frameworks, such as Apollo and GraphQL Codegen, have been trying to recreate a similar experience. I will be playing around with Apollo Client’s useFragment hook next week.

People ❤️

Here’s a Technique to Get Your Manager to Do What You Want.

The key insight is to make following our plans the easiest option. This applies to anyone, whether we are convincing our colleagues to adopt new technology or planning a family trip.

The Psychology of Waiting: 8 Factors that Make the Wait Seem Longer

This list makes intuitive sense. We can apply this insight to the UX patterns for long-running user actions:

  • Allow users to continue using the system while running the action in the background
  • Display the system status legibly in real-time
  • Provide a concrete estimated time to completion
  • Allow users to abort the action safely

Business 💰

Exclusive: Meta’s Canada news ban fails to dent Facebook usage

When the Canadian government passed a law to force Google and Meta to share their revenue with Canada’s news providers, Meta decided to block news in Canada. A month-long usage stat shows no difference before and after the decision, proving that Meta has not benefited from news on its platforms.

Robotaxis hit the accelerator in growing list of cities nationwide

Robotaxis are now being tested across more than a dozen cities in the US. I find it exciting, but I am curious who determines that enough testing is done and the robotaxi services can expand. The companies cannot be trusted to make that decision.

Young Reacts #242

I went to see a circus this weekend and was amazed by the performers’ extraordinary physical feats. On the way home, I thought about how I only learned to fully appreciate those feats and their talent and dedication to reach that level after I started training my body.

This experience made me think about how we often judge others’ work without fully understanding their challenges. For example, we might think that customer support is a simple job, but those who work in customer support know that it can be very demanding. Similarly, we might believe executives have an easy job, but they often have to make difficult decisions despite uncertainties.

The truth is, we can’t fully appreciate the work of others unless we walk in their shoes. Yet, it is impossible to try every role to build that context. That’s why being open-minded and learning from our colleagues is essential. By taking the time to understand their challenges, we can collaborate better.


Software Engineering ⚙️

TypeStat: Converts JavaScript to TypeScript and TypeScript to better TypeScript.

Once you start a TypeScript project with a less strict configuration, it becomes quite challenging and tedious to enable the stricter configuration (such as strictNullCheck or noImplicitAny). I’ve used Airbnb’s open-sourced project ts-migrate to enable those options, but the project could not fix the existing errors (and we had 20k+ errors!). This new project called TypeStat promises to fix the existing errors, and I can’t wait to try it.

Exploring GraphQL Clients: Apollo Client vs Relay vs URQL

When you adopt GraphQL, the client you choose will influence your architecture significantly (which I didn’t think about when I first used GraphQL). I’ve learned now that URQL is fit for the simplest use cases, Relay is for the most scaled and complex use cases, and Apollo Client is the middle ground between the two.

The question I am still thinking about is if there is a viable migration path from one library to another. If not, should you always choose Relay since it can solve the most complex use cases?

People ❤️

Meta updates RTO policy with stricter mandate

“Culture is the behavior you reward and punish,” and big tech companies are finally backing up their RTO policies with punishment. Meta announced that the employees’ compliance with RTO will be reflected in their performance evaluation, just as Google announced a few months ago.

Business 💰

HashiCorp Abandons Open Source for Business Source License

HashiCorp, the owner of a popular infrastructure management tool, Terraform, changed its license to prevent competitors from using it. HashiCorp is following other companies like MongoDB and Redis Labs, which abandoned open-source licenses for their business gains.

At this point, I wouldn’t build a company based on an open-source technology owned by another company without a contingency plan to maintain a fork.

Cruise: Pedestrian caused North Beach traffic jam, not Outside Lands

A day after CPUC allowed Cruise and Waymo to operate a paid service in San Francisco at all times, Cruise’s robotaxis malfunctioned and created a major traffic jam at a music festival. The crowd made navigating the streets challenging and degraded the cell service these robotaxis depend on. This incident shows that the safe rollout of robotaxis needs not just better machine learning but also contingency plans for extreme environments.

Nvidia GPU shortage is ‘top gossip’ of Silicon Valley

This article taught me two mind-blowing facts. First, a top-of-the-line GPU costs as much as $35k. Second, it takes over a few thousand of those GPUs to train the current generative AI models, which explains the GPU shortage.

Young Reacts #240

Software Engineering ⚙️

Relay-style GraphQL

Since I only have experience with Apollo GraphQL, I enjoyed learning from this heavily biased article for Relay. Even though Relay has a steeper learning curve than vanilla GraphQL, I see the benefit of defining the data requirements in the component, which reduces type errors. I will weigh between Apollo and Relay when I adopt GraphQL in my next project.

Tech debt: Reclaiming tech equity

Tech debt tends to mean anything developers want it to mean. That lax definition makes it difficult to have productive conversations with leadership and product management. So I loved the idea of a shared definition. But one question I still have after reading this article is how one can measure the cost of tech debt.

Keyboard-navigable JavaScript widgets

I believe that keyboard interactions are core to empowering heavy users. Moreso, if the app is for work. I have leaned on the shared library team to provide a reasonable default behavior, but I loved learning how to customize keyboard behaviors further.

People ❤️

The Power of Proximity to Coworkers: Training for Tomorrow or Productivity Today?

This paper finds that working from home boosts senior engineers’ productivity but hampers junior engineers’ learning. That aligns with my belief that any policy or technology has tradeoffs.

Business 💰

How a California vote on self-driving taxis could alter the future of AI

The California state government will decide whether self-driving taxis can operate 24/7 in San Francisco. I found this debate interesting because the state government is happy to position California as the innovation center. In contrast, the city government, which needs to deal with self-driving taxis, balks at the idea.

Young Reacts #230

I managed my first incident in my first oncall rotation last week. Luckily, I was already used to the stressful incidents from my time at Square, so I could coordinate and communicate calmly. Nothing is as stressful as hundreds of thousands of merchants missing their sales.


Software Engineering ⚙️

Admiral Rickover’s ‘Paper Reactor’ memo

This old memo on nuclear reactors reminded me of the danger of preaching ideas on paper without knowing the on-the-ground reality. Even as I get used to the leadership aspect of a staff engineer role, I will stay close to our code.

An introduction to Wardley (Value Chain) Mapping

I’ve heard quite a bit about Wardley mapping from other senior engineers and finally took some time to read about it. It’s a way to represent a value chain across two axes, the proximity to the customers on the y-axis and the degree of uncertainties on the x-axis. Its goal is to understand the situation and then plan the next strategic moves.

An example Wardley map from the above-linked article

Rich Harris on Svelte’s TS to JSDoc Conversion

Svelte, one of the rising web frameworks, has decided to move away from Typescript to Javascript with type annotations in JSDoc, which was against the trend. The creator of Svelte explained why, and it resonated with me: it’s easier to understand and debug Javascript written by humans and to contribute to the project as there is no build process.

Using @defer Directive with GraphQL Code Generator

It is exciting to see the defer directive gain tractions across the ecosystem. Seeing my favorite GraphQL code generator tool adopt the directive is more exciting.

People ❤️

Can AI help employers screen for honesty?

This article poses an interesting question:

[I]s it unfair for employers to use machines to help evaluate a person’s integrity? Or is it more fair than relying solely on the subjective judgment of humans?

To that, I propose: it’s wrong to judge a person’s character based on their non-verbal cues, which is culture-dependent. Instead, we should ask about their past experiences. Once we change the questions and prove that AI can predict a hired person’s future performance as well as a trained human interviewer, I don’t have a problem with AI interviewing us.

Layoffs push down scores on Glassdoor: this is how companies respond

This article helps you understand how Glassdoor’s review system operates. In short, remember that Glassdoor’s revenue comes from employers, not employees.

Business 💰

An apparently AI-generated hoax of an explosion at the Pentagon went viral online — and markets briefly dipped

This is the brave new world.

Young Reacts #218

Here are the articles that taught me something last week. Enjoy!


Software Engineering ⚙️

The Standard of Code Review

I’ve been thinking about changing our code review culture to be more permissive, as I feel hampered by minor feedback. I liked this core principle of Google’s guide: “In general, reviewers should favor approving a CL once it is in a state where it definitely improves the overall code health of the system being worked on, even if the CL isn’t perfect.” (emphasis mine)

Fixing a 3 second lockup in our app by switching from Apollo Client to URQL

This article got me thinking about how I would resolve the Apollo Client freezing during the initialization. The author’s team found an easy solution as they didn’t rely on Apollo Client’s caching. If swapping a GraphQL client is not easy, I don’t see an easy path forward; we could minimize data loaded initially and load data as needed. But given how Apollo works (vs. Relay), finding unnecessary data in that initial loading will be difficult. So this article made me less inclined to choose Apollo for a large single-page application.

After Alaska Airlines planes bump runway, a scramble to ‘pull the plug’

As software permeates every aspect of our lives, the code we produce has real-world consequences. It is impossible to create a bug-free system, but it’s possible to provide redundancies and workarounds for system malfunctions, like in this case.

GraphQL Network Inspector: Chrome Plugin for GraphQL network monitoring

This Chrome extension is platform-agnostic; you can use the extension with Apollo, Relay, or any other client. It can be helpful when you are playing with someone else’s website.

People ❤️

Remote work helps push disabled employment to a record high of 21%. But the gain is imperiled by return to the office mandates

Amid layoffs, more companies are mandating regular time in the offices. While I am more productive and happy to work in the office, I shouldn’t forget that working from the office will strain some of my colleagues due to family care responsibilities or mobility challenges.

Business 💰

Forget Milk and Eggs: Supermarkets Are Having a Fire Sale on Data About You

I used a 15% discount and a $5 coupon to get a bottle of champagne for our anniversary yesterday. And this article details what the store will do with that data. The store will share that information with other advertisers, and the advertisers will complement it with other sources to target me better on various platforms. “Data is the new oil.”

Notion’s now letting anyone use its AI features

Just months after ChatGPT’s arrival, it is getting integrated into our everyday tools and workflows. To take a step further, I’ve heard many have used ChatGPT to write peer feedback for review cycles, and while I am uncomfortable with the idea, I am very tempted to do that.

Young Reacts #209

As we go into the final two weeks of 2022, I wish you happy holidays!


Software Engineering ⚙️

Engineering in a Hybrid World

This report shows how other larger technical organizations operate. I found this part on measuring engineering productivity most intriguing: “Developer productivity can be compared to a sales funnel, with key metrics that can be tracked at each stage.” The report defines the stages as Writing Code, Code Review, Testing, Deployment, and Maintenance.

nact ⇒ node.js + actors

This Node.js library helps you by forcing you to delineate the different domains in your code. I also see a similarity in call patterns of nact’s actors and GraphQL’s resolvers. I don’t have an opportunity to test this out at work, but I will remember this in the future.

People ❤️

Why Incentive Plans Cannot Work

This article reminded me of the book “What Money Can’t Buy.” When we put price tags on intangibles, we lose the ability to see anything else.

Control vs. Context

The author suggests that control and context may not be one or the other but can coexist; there can be a high control and high context environment. It’s an interesting thought, but I can’t entirely agree that they are independent of each other, as his 2×2 grid suggests. High context enables low control, and low context forces high control. If people have enough information to make good decisions, they don’t need to be told what to do.

Business 💰

The charges against Sam Bankman-Fried and the first FTX Congressional hearing

It’s about time SBF gets actual charges for his fraud. Saying sorry and admitting his incompetency should not save him.

CEO Geoff Schmidt’s message to Apollo employees

Apollo, one of the top GraphQL tooling companies, laid off 15% of their workers. I was sad to see this happen because I’ve been a big fan of their work.

Apple announces biggest upgrade to App Store pricing, adding 700 new price points

I did not know that App Store only supports a few hundred price points. That explains why no apps are priced at “weird” numbers, such as $0.24 or $4.86.

Young Reacts #199

My time melted away last week. Even Friday, which is typically light on meetings, had 6 hours of consecutive meetings. I did say that I liked annual planning, but I can’t wait to get it over with. I hope your Q4 is less busy than mine.


Software Engineering ⚙️

“Best Practice” is not a reason to do something

We, software engineers, are paid for our judgment and its results. Consider how defensible your decision will be when things go wrong.

A Guide to GraphQL Rate Limiting & Security

Even though the article focuses on GraphQL Rate Limiting, I learned a few things applicable to my team, such as assigning higher costs to mutations and limiting the number of concurrent requests.

People ❤️

Understanding The Trust Equation

This article adds two new facets of trust I haven’t considered: intimacy and self-orientation. Intimacy is “the safety or security that we feel when entrusting someone with something,” and self-orientation is whether a person primarily focuses on themself. I now see how intimacy impacts my perception of others, whether at work or in my personal life.

Building Clocks: the mindset for operational autonomy

I looked back at how I work after reading this article. I feel that I’ve been telling the time (e.g., checking metrics by myself and asking for updates through D.M.s) when I should have put processes in place.

Are M.B.A.s to Blame for Wage Stagnation?

An MIT MBA professor found that “managers with a business degree reduce their employees’ wages.” The study doesn’t answer why, but I suspect that the polarization between managers and workers of background, education, and experience has made it easier for managers to take away from the workers.

Business 💰

The creator economy: a power law

Several interesting points in this analysis of the creator economy:

  1. “Most views and eyeballs accrue to a relatively small set of professional creators.”
  2. “For creators focusing on longer-form video (e.g. Youtube, Twitch), in-platform ads are the key revenue driver, …for those focusing on feed-based platforms (Instagram, Tiktok etc.), the holy grail is direct monetisation of the audience – via affiliate marketing, premium subscriptions, paid content, and merchandise.”

Interesting Finds 💡

How K-Pop Apps Create the Illusion of Private Messaging with Celebrities

As a casual K-Pop fan, I got upset about the K-Pop industry’s blatant tactics to milk dedicated fans, like guilt-tripping fans for ending their subscriptions.

Measuring McCities: Landscapes of Chain and Independent Restaurants in the United States

Interactive Data Dashboard for Chain Restaurants

This visualization shows how many restaurants in your area are independent vs. chains.