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 #249

A top-priority project that my org has been working on for the past six months will now be launching internally this week. I dubbed it “the most expensive prototype I worked on” since it started from a literal back-of-the-napkin drawing. We will get a lot of feedback, which I am both looking forward to and dreading simultaneously.


Software Engineering ⚙️

A (more) Modern CSS Reset

I’ve used a few open-sourced CSS resets before but haven’t spent time reading about what they do. I appreciated that this article concisely explains what each part does with links for further reading. I learned that the resets are opinionated and should be customized for my projects.

Lessons From Debugging

I couldn’t agree more with this quote in the article.

Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it? –Kernighan, The Elements of Programming Style (1974)

On Hate Scaling Laws For Data-Swamps

A group of researchers found that models training on larger data sets have more societal biases, possibly due to the worse data quality. The conventional wisdom of “the more data, the better” can’t hold if the data quality degrades.

People ❤️

When Should I Write an Architecture Decision Record

Whenever you wonder if you should write an ADR, the answer is yes (unless a decision is not reached yet). Even for decisions made in the past, explaining the decision now will benefit your colleagues in the future.

Snake on the wall!

Some problems (flaky alerts, slow build time, etc) do not have an easy, objective way to quantify the pain. But collecting anecdotes (essentially a diary study) is a powerful way to tell a compelling story.

Business 💰

ChatGPT can now see, hear, and speak

Multi-modal ChatGPT will be rolling out to select customers in the next two weeks. As generative AI gains more ways to interact with the real world, some are now imagining new form factors for AI (Jony Ive + OpenAI, AI device at Paris Fashion Week).

Spotify’s AI Voice Translation Pilot Means Your Favorite Podcasters Might Be Heard in Your Native Language

This is a futuristic application of generative AI, but I am unsure how successful this project will be. I believe that people would want to listen to the perspectives of those from similar backgrounds, just like how only a few Netflix content cross borders.

Young Reacts #248

Last week was a bit of a highlight for me at work. First, my project got a shoutout from an engineering all-hands as a project that was executed exemplarily. Second, I’ve received mid-year feedback from my manager, which had me meet or exceed expectations across our competency model. I am still new and have more to contribute and prove, but it feels great to be recognized for my work.


Software Engineering ⚙️

htmx

This frontend framework enhances HTML to add additional functionality, such as making HTTP requests from buttons (<button hx-post=”/clicked” hx-swap=” outerHTML”/>). It relies on the server to provide the state management, so I would only use this for simple web applications.

Android – Personalize your app’s UI with grammatical gender

Since Korean and English are not gendered, I never considered that some languages require localization in masculine and feminine-inflected forms. Now I wonder which form to use if you don’t know the gender of your user. I will consider this as we revamp the localization infrastructure at work.

Deno – Jupyter notebook integration

Even without Deno, it was possible to use Jupyter with Javascript. However, Deno makes it vastly easier to use existing Javascript libraries.

People ❤️

I’m No Longer a Manager (And that’s a good thing)

As my team has an opening for a manager, I briefly considered the role. My last experience at Square taught me that I love talking to people, but I loathe writing about people (for review cycles, disciplinary actions, etc.). Thus, I said no to the role. As the article’s author did, knowing what brings you joy at work is essential. For me, it was having the flexibility over my time.

Capturing your design system decisions

It sounds obvious now, but I never considered using architecture decision records for non-technical decisions. It frees me up to document a lot more of my decisions.

Business 💰

Thoughtworks Technology Radar

Thoughtworks published another iteration of their quarterly technology radar, an opinionated guide to technology. The prominence of AI stood out to me the most. The radar had tools to automate localization, summarize user research, and many hosted LLM services to power your apps.

Summary of the 2023 WGA MBA

Writers Guild of America finally ended their strike after reaching a tentative agreement last week. As part of the agreement, studios have agreed to confidentially share their viewership data to calculate payouts, which surprised me.

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 #246

I’ve been on a home interior design kick lately. I love that I can make my space show myself and that I now have the stability to invest in the space. I’ve been spending a lot of time on Pinterest, Etsy, and YouTube, looking for inspiration. But sometimes, I feel overwhelmed and frustrated. I want to get things done quickly and check them off my list. But I have to remind myself that this process is more about learning about myself than it is about buying pretty things. I need to think about how I use my space and what I love to see around me. When my home design is finally complete, it will be like a well-aged wine: something that I’ve put time and effort into and that will only get better with age.

Floor Plan for My Office

Software Engineering ⚙️

v0, the new generative UI tool by Vercel

Vercel, the company behind next.js, created a new tool called v0 to create reusable React code from text prompts. I don’t yet have access. However, this company deeply understands how to write React, so I will pay attention to how this tool will develop over time.

Bun 1.0

Bun is another next-gen JS runtime like Deno, hoping to replace Node.js. But it took a different route than Deno’s. Deno intentionally broke the compatibility with the Node.js ecosystem, whereas Bun embraces the Node.js ecosystem. Given that I regularly see code written ten years ago, I believe Bun will have a much easier time getting traction, especially among enterprise customers.

People ❤️

Short-lived feature teams

My current team has 15 engineers (!) under one manager, which isn’t sustainable for the manager or the engineers. Now that we finally got a headcount for another manager, the challenge is figuring out how to delineate the teams.

I’ve always been part of stable teams with clear missions or ownerships and preferred to operate that way. But my five months of experience tells me it’s not easy for teams to have long-term missions here. So, we best separate the reporting chain from the projects described in this Slack message.

Disabled And Here Collection

The images we have in our heads constitute our biases. So, the stock images that show disabled people are a powerful tool to broaden our perspectives.

Group sleepover
Image Credit: Jonathan Soren Davidson for Disabled And Here.

Business 💰

Unity plan pricing and packaging updates

Unity has unilaterally decided to change its pricing model to charge fees per user install on top of its existing monthly subscription. The developers are upset about this violation of trust and are protesting. However, it would be impossible to change your game engine soon, and still very challenging in the long run.

Microsoft announces new Copilot Copyright Commitment for customers

Microsoft pledges that it will shoulder any copyright-related legal responsibilities if they arise. It will surely convince more companies to adopt Copilot products.

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 #243

As I wrap up my first project next week, I fear I’ve missed some crucial edge cases. I guess that’s what the slow rollout is for, but I can’t shake that urge to make everything go perfectly. How do you fight that urge?


Software Engineering ⚙️

Override web content locally even faster

This new Chrome feature (available in Chrome 117) to override the network request has the potential to boost productivity, unblocking frontend development when the needed API is under development. When Chrome 117 becomes GA’ed, I will see how easy it is to set up and share the overrides.

Slack’s Migration to a Cellular Architecture

I learned about cellular architecture from this article. Cellular architecture is one in which all services in a datacenter only talk to other services in the same datacenter, making it simple to understand failures. It’s taking the concept of kettle vs. pets to an extreme and treating an entire datacenter as replaceable.

14 Linting Rules To Help You Write Asynchronous Code in JavaScript

Even if we don’t apply these lint rules, this blog post educates us on the common mistakes with asynchronous Javascript code.

People ❤️

From Projects to Products

People must indeed be involved in a product long enough to feel the ownership. At my current employer, engineers work on the same products, whereas designers and product managers move from one product to another (not by their choice but by the org’s decision). And the engineers evidently pay more attention to the success metrics and health of the product than the designers and the product managers do.

Business 💰

Facebook, Instagram, TikTok Want On-Platform Commerce

Do you remember when Netflix wanted to “become HBO faster than HBO can become Netflix?” The same is happening in e-commerce, where Amazon wants to own discovery, and social media companies want to own shopping.

The College Board Tells TikTok and Facebook Your SAT Scores

I find this particularly egregious for two reasons: first, they transfer data about minors, and second, more importantly, the minors have no choice but to use The College Board during their college application process.

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 #241

I was asked to scope a project for a VP-level prioritization meeting for a product release. The scoping work was nothing special. But I added one new section in the resulting estimates for those VPs on which I got great feedback.

As I was about to sign off, I thought to myself that these execs wouldn’t want to dig into low-level estimates for individual features unless they wanted to discuss what needs to be cut to the timeline. So I prepared an overview table showing the aggregated scope for each product area and the total (see below).

With this simple table, the VPs could focus on the areas they deemed too expensive. At the end of an hour meeting, we’ve halved the scope and prioritized some areas over others. Later on, I got messages from some VPs that they appreciated being able to get an overview of the project. It’s all in meeting the audience where they are at.


Software Engineering ⚙️

Tech Debt Isn’t a Burden, It’s a Strategic Lever for Success

Tech debt will not be resolved just because engineers call it tech debt (if it does, the organization has a bigger prioritization problem). The team has to evaluate tech debt with the same rigor as product investments regarding problem definition, scope with milestones, and success criteria. That’s why I’d like to call tech debt “tech investments” instead.

Linking generated code to source maps

I’ve used source maps for over ten years, but I must confess that I didn’t understand how it worked. I was helping my teammate with uploading source maps to our monitoring service and finally had a chance to learn how browsers know to find the correct source map files.

People ❤️

Using CPR (Content, Pattern, and Relationship)

Content, Pattern, and Relationship clarifies the types of feedback we give. When we get frustrated that the other party does not change their behavior despite repeated feedback, we need to realize that our following feedback will be about the strained working relationship, not that behavior. Then, we can adjust how we approach that difficult conversation.

Untold narrative as a Head of Design

This article resonated with a topic I’ve contemplated as I got more senior: how authentic should I be as a senior member of a team? I am often the most senior person in a meeting, so I become conscious of the examples I set and try to act the best version of myself. Does that make me a more effective teammate? Probably. Is that the most authentic me? I am not sure.

Publish Everything (Pretty Much)

The times I’ve avoided publishing, it has been because of fear of rejection or fear of judgement.

I’ve felt the same fear when I write something. I sometimes feel that for this newsletter too. But I overcome the fear reminding myself that I learn something from writing and publishing even if no one does.

Business 💰

Cruise, Waymo get green light to give paid rides 24/7 across San Francisco

Previously, Cruis and Waymo were only allowed to operate in certain parts of San Francisco and could only offer free service. That will change soon. This service expansion will be disruptive, but I am excited about a future where older people and the mobility-challenged can travel with much greater freedom.