Young Reacts #93 – Sunsetting Moment.js

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

Photo by Chris Montgomery on Unsplash


Software Engineering ⚙️

Moment.js Project Status – Moment.js

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

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

Fluid Framework – Microsoft

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

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

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

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

People ❤️

Things To Know About Engineering Levels – Charity Majors

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

Meeting everyone on a new team – Anna Shipman

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

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

Business 💸

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

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

TLDR Stock options – LTSE Tools Team

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

Young Reacts #90 – npm v7 beta

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

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

Software Engineering ⚙️

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

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

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

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

What’s a reference in Rust? – Julia Evans

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

People ❤️

Our remote work future is going to suck – Sean Blanda

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

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

Business 💸

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

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

Open letter to Australians – Google

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

Young React #86 – Records & Tuples for React

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


Software Engineering ⚙️

Records & Tuples for React – Sébastien Lorber

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

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

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

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

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

Business 💸

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

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

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

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

Hurting People At Scale” – BuzzFeed

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

Young Reacts #77 – The Third Age of JavaScript, Attracting Feedback

I am keeping this one short because I have been feeling unwell. It is exhausting to see what’s been happening. But I will stay kind and be the change I want to see. Please take care of yourself, physically and emotionally.


Software Engineering 🌐

The Third Age of JavaScript – Shawn Wang

Typescript, Babel, and Webpack are awesome. But have you heard about Roma, Snowpack, Deno, Redwood? I am especially looking forward to the future with faster Typescript compilation and little, or no JS bundling.

Nulls in GraphQL: Cheatsheet – Hasura

I don’t agree that a GraphQL schema should default to nullable fields because 1. not all partial data is useful, and 2. the query ergonomics can suffer from too many nullable fields. But the last section on the description of how different client behaves is worth reading. I, unfortunately, had to learn Apollo client’s default behavior once a bug broke a feature on production.

What is GraphQL Inspector? – The Guild

A healthy GraphQL schema is backward-compatible. This tool, GraphQL Inspector, can warn you if you are breaking the schema by mistake.

People

Attracting Feedback – Chelsea Troy

We all know about the art of giving feedback, but we should also learn the art of attracting feedback. Since giving feedback is hard, we need to make it as easy as possible. There are several tactics, but I especially liked the idea of “publicly praising them for the feedback.”

The public do not understand logarithmic graphs used to portray COVID-19Romano, Sotis, Dominioni, and Guidi

The study also reminds me that just because I am saying something, that doesn’t mean the other person has understood what I mean. Communication is collaborative.

Business 💸

Epic’s Flywheel & Unreal Engine – Matthew Ball, and Jacob Navok

I got two takeaways here: 1. Unreal Engine’s application is reaching beyond gaming, namely virtual content production. 2. Because of the network effect on the developers, the Engine will get the most investment and likely retain its dominance for the foreseeable future. The gaming industry never ceases to amaze me.


Remember George Floyd

Young Reacts #75 – Deno 1.0, Autonomy vs. Leverage, Twitter going remote forever

I had a disappointing week because our user acceptance testing session after a month of hard work revealed two blocking issues. I don’t expect huge changes, so the release will be delayed only about a week. Normally, I would expect some amount of rework and often appreciate this feedback since it means we can release a better product. But this delay sapped my morale.

Thinking over the weekend, I see two reasons why I am so disappointed. First, I have led the engineering effort for this project and communicated with the stakeholders about the release plan. While I accept the inevitable uncertainty, I still feel that I am responsible for the delay, and it doesn’t feel great.

Second, this is the last project before I move to a different domain, and this delay leaves me in a limbo state longer. I need a clean closure and want to focus on the new domain, which already has many projects that require my attention. But this project is getting in the way.

Hopefully, by the next issue, I will have completed the project!

Photo by Charles Deluvio on Unsplash


Software Engineering 🌐

Deno 1.0 – Ryan Dahl, Bert Belder, and Bartek Iwańczuk

The biggest news in Javascript last week was the announcement of Deno 1.0. Deno is out to simplify and secure the ecosystem, as outlined two years ago. Deno promises to provide stable and standard browser APIs. While its ecosystem is split from the Node ecosystem and still very nascent, it already offers many standardized solutions to common problems, such as formatting and running on AWS Lambda.

Native Javascript APIs are now powerful enough for most tasks, thanks to quickly evolving ECMAScript standards. If we have some key libraries for data access and web server framework production-ready, Deno will be useable as a webserver.

Apollo Server File Upload Best Practices – Khalil Stemmler

JSON isn’t the only form of data that needs to be sent between clients and servers. I read this article in preparation for the internal GraphQL discussions. As the article suggests, it makes sense to isolate binary data handling from GraphQL servers.

The JavaScript coders guide to getting more from GitHub and NPM – Edward Thomson

This video is a sneak peek at the upcoming npm 7. A picture is worth a thousand words and a video worth a thousand pictures. You can find improved npm audit at 7:36, yarn support at 13:56, and workspace support at 16:32.

People

Autonomy vs. Leverage – Marty Cagan

I appreciate this list of factors to consider when you tradeoff between autonomy and leverage. Two factors new to me were Level of Accountability and Importance of Integration. If you want the work by many teams to integrate with relative ease, you will want to align on common interfaces, which is what my org is going through.

Business 💸

#LoveWhereverYouWork – Twitter

Twitter announced last week that it would support a permanently remote workforce. Even though there have been some notable remote-first or remote-only companies, we never had it at a Twitter scale. As more companies support remote work, it will have a massive implication on the local economy (commercial and residential real estate, to begin with). People in Silicon Valley are already talking about moving out.

Reddit About to Beat Facebook, Telegram, and Most ICOs With Actually Useful Token – Camila Russo

Reddit launched the Community Point system for its subreddits on the public Ethereum network, which means the awarded Points belong to the users forever. As a crypto skeptic, I don’t see that this ownership aspect differentiates the system much from other loyalty programs. Doesn’t Reddit still own the rest of the ecosystem that could change the value of the Points? Nonetheless, I am deeply curious about how this experiment will pan out.

Young Reacts #74 – web-vitals, Elad Gil on this Recession

My director just started recruiting an engineering manager for my team. Luckily, my teammates and I will be on the panel for the interview. I call it lucky because it is rare to get a chance to pick their manager, who will determine a large portion of their experience at the company and future career trajectory.

But since it’s rare, I don’t have any prior experiences to rely on. I “picked” my managers by choosing to accept an offer based on the limited information from the interviews. After some mulling, I came up with three focus areas: performance management, IC growth, and autonomy (context, not control in Netflix jargon). I will see if these are in line with the rest of the team this week.


Software Engineering 🌐

web-vitals: Essential metrics for a healthy site – Google Chrome Developers

Google announced a small lib to track website performance, along with a useful Chrome extension. Since some tracked metrics are not standard (Largest Contentful Paint, for example), some wonder if this is Internet Explorer all over again. They may be right, but all my users are on Chrome 🤷🏻‍♂️

Facebook iOS SDK causing Crashlyics outage – Crashlytics

Over the last week, a bad Facebook iOS SDK crashed all popular apps (Tiktok, Spotify, Tinder, and A LOT more) integrated with Facebook. From the sideline, I find it amusing that a P0 incident by Facebook caused outages across the entire iOS ecosystem. No doubt, this incident sucked for Apple too. I wonder if we will see some changes from Apple.

DevTool Layers Panel – Supercharged – Google Chrome Developers

Have you wondered how to see how your divs are stacked? Layers panel is the answer!

People

Micromanager, Absentee Manager or Thought Partner — Which One Are You? – Kim Scott

A micromanager is a well-known failure mode of a manager. But the lesser-known end of the spectrum, an absentee manager is just as harmful. Read about how to tell if you are one or the other and how to find the balance.

How to Prep for Speaking at a Virtual Conference – Ivan Burazin

Tech workers are likely to stay home at least for the next six months, and more conferences are now virtual. Ivan Burazin gives several logistics tips on how to set up your environment.

Business 💸

Startup Offense and Defense in the Recession – Elad Gil

I didn’t think about how long the recession will last after the economy starts to reopen. The timeframe Elad Gil suggests, 2-3 years, looks like a reasonable estimate assuming we find an effective treatment or a vaccine in a year or so. A better way to plan is to assume 1-2 year recovery after the medical breakthrough. We are running a marathon.

Bye, Amazon – Tim Bray

Amid this crisis, Amazon is winning a larger share in the market and more power over its workforce. Tim Bray quit his job as a VP of AWS over “Amazon firing whistleblowers who were making noise about warehouse employees frightened of Covid-19.” There are contradicting accounts about how this went down, but I believe we will hear more stories like this on Amazon considering its size.

The ELIZA Effect – 99% Invisible

A short story on how people have interacted with bots with natural language interfaces starting from ELIZA in 1966 and how we interact with Siri or Google Duplex now. People’s expectations change over time. I now expect all chatting interfaces to be powered by bots. Similarly, the next generations will expect all voice interfaces to be powered by bots.

Young Reacts #73 – Gatsby’s Incremental Builds, Spotify Squad Myth, Basecamp’s Take-home Tests

Nuance matters in reality. Whether we are responding to COVID-19, organizing our teams, or setting up an interview process, simplistic and ideological solutions will lead to suboptimal results.


Software Engineering 🌐

From Static to Real-time: Introducing Incremental Builds in Gatsby Cloud – Gatsby

As I was reading A Static Future, I kept thinking, “this wouldn’t work for my app full of ever-changing data.” But soon after, I found out that the company Gatsby released an incremental build on its platform. The holy grail of CMS. I want to follow up in a couple of months and see if it works as expected.

What It’s Like To Work on League Of Legends? – Built In

Five interviews with technologists at Riot Games, the creator of League Of Legends. I enjoyed getting a glimpse of how different roles come together to build games, which I’ve never worked on myself.

People

Failed #SquadGoals – Jeremiah Lee

The former product manager at Spotify criticizes the famous Spotify Squad model for the lack of alignment and accountability. But I also heard from my coworker from Spotify said that they updated the model in early 2018, and that she missed working as a fully autonomous unit. Your mileage may vary.

Hiring programmers with a take-home test – David Heinemeier Hansson

Take-home test is a contentious topic where people take an ideological stance. But idealism has to meet pragmatism at work. As a hiring manager, you have to get enough signal through a process acceptable to both the team and the candidates. Maybe, if you are a famed company, you may be able to get away with a more stringent interview process. But a high-quality candidate may not appreciate the extra effort your process takes.

Terminology: it’s not black and white – British National Cyber Security Centre

I am pleasantly surprised by this announcement. I never expected a government agency (especially a cybersecurity agency) to eagerly update their policies to promote a more equal, accepting environment for all.

Business 💸

Impact of COVID-19 Crisis – Startup Genome Project

Since the beginning of the crisis 74% of startups have had to terminate full-time employees. 39% of all startups had to lay off 20% or more of their staff, and 26% had to let go 60% of employees or more.

The numbers speak for themselves.

The Burn Multiple – David Sacks

The Burn Multiple is defined as Net Burn (spent investment dollars) divided by Net New ARR (revenue growth) and can be used to show the efficiency of growth. Even if you are not a founder, the efficiency of your company will matter in this business climate, as shown above.

Young Reacts #72 – Formik, Technology Radar, and more

A bit of a personal rant —

It is difficult when I see a situation that runs counter to my principles, justice as fairness (Rawlsian), and tolerance. I try hard to understand and empathize with those that upset me and also wonder if I need to take a stand against the situation. I recognize that I won’t be able to change those against me. I also feel some responsibility for the less privileged victims to show solidarity. I worry about personal consequences as well, the stress and possible reputation hit. I wonder if private rants like this are productive.

Photo by Frank Busch on Unsplash

Software Engineering 🌐

Formik – Jared Palmer

I heard of Formik before, but I was never convinced enough to use it. I felt that in simple forms, useState and prop drilling weren’t too bad. I gave it a try last week, and it was an instant game-changer. It made building a form with a deep component tree a breeze. Validation and async states like “isSaving” are easy to manage, as well. Most of the frontend work is form building anyway, so give it a try.

Enduring techniques from the Technology Radar – Thoughtworks

This article surveys mainstream concepts and techniques in the software industry. Reading this article will allow you to see what you have missed. I found a couple of ideas, such as consumer-driven contract testing, to catch up on.

Documenting Architecture Decisions – Michael Nygard

One of the hardest things to track during the life of a project is the motivation behind certain decisions.

I first read this article in March 2019, but I clearly haven’t internalized the learning since the idea felt new again. The article this time is more timely and applicable since I am about to leave one project to the newer members of the team.

People

Designing in an all-remote company – Christie Lenneville

A GitLab’s UX Director wrote about how their UX designers work in a distributed fashion with some good ideas to create an effective design organization (like recording meetings). She touched upon this point briefly, but I want to emphasize that both synchronous and asynchronous communications have their roles.

When you have time, take a look at their recorded design showcases too.

Jeff’s Letter to the Angular Team and Community – Jeff Cross

Sadly, another article on poor leadership in a prominent tech community. Since it is very long, here is a tl;dr: Angular leadership has been putting up the facade that everyone is happy and aligned while imposing ironclad micromanagement internally.

On a similar theme, here is one on Elm leadership that I shared before: https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/

Business 💸

It’s Time to Build – Marc Andreessen

Marc Andreessen wrote an emotional piece on how the United States should change, given the lackluster response to the pandemic. He criticizes the inability to “build,” and produce, and start investing in those capacities. Humans are hard to change without a crisis, which this pandemic is. But polarized politics, among other things, will probably squander the chance.

How Medium became the best and worst place for coronavirus news – The Verge

Using any sort of user-generated content looks like a losing proposition these days. Either you censor it and get dinged or not censor it and get dinged.

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

This is my quote of the week. Yes, I have more time since I don’t commute anymore. But life is still too short:


People ❤

Using 6 Page and 2 Page Documents To Make Organizational Decisions by Ian Nowland

Memo reading and writing are a huge part of Netflix culture. Yet, it is hard to find a decent guide to write an effective memo. I like the concrete structure provided by the guide, heavily influenced by Amazon’s memo culture.

Why I’m leaving Elm by Luke Plant

Luke’s rather long account and the reader’s comments remind me that the governance of open source projects is as important as the technology, and certainly more important than the number of stars, or downloads.

Software Engineering 🌐

Developing in a Monorepo While Still Using Webpack by Salem Hilal

Webpack performance is hard. Etsy’s open-sourced solution, Kevin, is optimized for a monorepo build performance by setting up and tearing down compartmentalized Webpack servers on demand. That will help with a gradual upgrade of the build system, too.

Deploys at Slack by Michael Deng and Jonathan Chang

I am a bit surprised to read that Slack mutates its infra to deploy. I assume mutating is faster than baking immutable images but feels a bit risky. How would one know if the correct version is running on a particular instance when the file sync fails?

gqless or gqlful? by Marc-André Giroux

One section (Declarative, Static Queries) stood out to me. Type-safe flexibility is a significant benefit of GraphQL. However, that flexibility hinders performance monitoring and optimization. As we scale GraphQL internally at Netflix, we need to think about those two aspects.

Note: gqless is a new library that goes one step beyond babel-blade. On top of dynamically creating queries for the required data in components, it even hides that the components are querying for remote data.

Business 💸

Newspapers to lose £50m in online ads as firms use coronavirus ‘blacklist’ by The Guardian

The old media is going through another extinction event. So much of coverage is on coronavirus, but no advertiser wants to be associated with it.

F1 Virtual Grand Prix! Full Race | Albert Park Circuit by Formula 1

Esports is the only sports in 2020. Even Formula 1 is forced to use F1 esports to keep fans engaged. The virtual races will occur on the planned Grandprix weekends on the same circuits, featuring some of the current F1 drivers.