I attended the first-ever WebAssembly Summit this week. It had a very distinct feel to it than other more established conferences I have been to. It had a single track and happened on a single day. A lot of contributors/early adopters were in the room, and the speakers geared toward them. I went there to find compelling use cases that could be applied to my day-to-day work, but I wasn’t able to achieve that, which tells me the technology is still in the early adopter phase.
In April, I am giving a talk in front of the largest audience in my experiences so far. It is honestly terrifying, so I will give it my 100%. This guide from Chris Anderson, the TED organizer, says a compelling narrative is the most important.
When we engineers think about solving a problem, our goal should be to make our users awesome (Fire Mario) rather than to create an excellent tool (Fire Flower).
An online trivia service that was so hot just a couple years ago shut down. I still remember how envious my team was of the service when I was at an online community startup. Consumer-facing services are a tough business.
The event was the first WebAssembly conference. It had a single track and happened on a single day. A lot of contributors/early adopters were in the room and the topics were geared toward them. I went there to find interesting use cases that could be applied to my day-to-day work but I wasn’t able to achieve that.
Here are my notes from the conference. I am no expert with WebAssembly so my notes may be incorrect:
Opening Keynote: WebAssembly: Building a new kind of ecosystem – Lin Clark
WebAssembly on Web is portable and secure.
WebAssembly on Server may lose security if we are not careful.
Currently in Node.js ecosystem, there is no sandbox to secure the system from 3rd party codes
Malicious code
Example: electron-native-notifier. A Bait and Switch scheme to steal bitcoins
Memory access
The number of malicious code has doubled from 2017 to 2019
Why the #wasmsummit Website isn’t written in Wasm, and what that means for the future of Wasm – Ashley Williams
WebAssembly shouldn’t replace Javascript
How are values prioritized for WebAssembly? The community does not have an explicitly shared vision. We should make it easier for people to use WebAssembly.
Empowering people!
What does WebAssembly want?
Marketing does not speak the language of the people it wants to reach
Rust, C++, Javascript, Academia, New Developers all get together
What do people want from WebAssembly?
multilanguage support
Why? JS doesn’t meet my need
Why? performance inconsistencies / don’t understand/like it
What do the above numbers mean?
Javascript has an unwilling monopoly.
Performance is not as large of a concern as you would respect.
A talk on generating midi music with WebAssembly implementation. Javascript to write songs and WebAssembly to generate sound. He was able to create an executable out of the Javascript to play the song via terminal.
During my last compensation review, one identified growth area was to expand my impact outside my team and applications. So I started looking for cross-cutting problems, one of which was the lack of a user-based feature flagging solution.
But I couldn’t just go and build the system I wanted since none would buy into my solution. A unilateral decision doesn’t work at Netflix due to our culture of freedom and responsibility. Therefore, most of the cross-cutting problems are solved via working groups, a group of interested people who work together to define needs, recommend a solution, and, possibly, implement the solution.
So I kicked off a working group on feature flags last week. Even though I have seen firsthand how the groups worked together to transition our servers to containers, and to introduce GraphQL, this time is my first attempt at running a working group. It will be a challenging and teaching experience. But I will get through it.
This article gave me a perspective on how to identify cross-cutting problems. A sequel to this article, Technical Research and Preparation, also suggests a possible path forward.
Facebook surveyed what employees look for from their employers. The three values resonated with me as well. It was good to have my wants organized neatly like this.
Swift, a language originally designed by Apple for its UI applications, is now expanding to server applications just as Javascript and Kotlin did. To help with the expansion, Apple announced a library to enable cryptography using Swift on Linux.
Once you get used to modeling your data using Typescript, your thinking will become much more precise. This guide comprehensively shows how to represent different kinds of values.
AngelList created a financial innovation to reduce fund-raising frictions for VCs. Will the new VCs, enabled by the lower barrier to entry, be able to change the VC industry?
I used to organize a monthly meetup for startup managers when I was in Seoul. I loved meeting new people, getting to know how they approached their roles, and exchanging ideas in a safe environment. I enjoyed it every time and now miss it dearly. That is why I planned to organize a similar event this year.
So for the first time, I organized a small gathering with people managers in South Bay this week. The turnout wasn’t large (4 in total), but I felt that it was a good start. The group was small enough to have in-depth discussions. I learned how certain teams at Epic Games, Chan Zuckerberg Initiative, and LinkedIn are organized, and was nudged to read about inwards, outwards, and holistics. I am planning to turn this into a regular event now.
High Output Management remains to be my favorite business book. One key lesson from the book is that a manager’s output equals the output of the organization under their supervision or influence. I’ve been thinking that the same applies to other types of leaders, such as senior engineers or tech leads, just as this article says.
I have been disappointed by many managers before for their seeming lack of interest in my development. But this article made me regret not having more candid conversations about their motivations and priorities.
I remember my old days at a startup where we tweaked our feed algorithm just a tiny bit to improve our numbers. There wasn’t much science to it. We had a lot of magic numbers, which made me wonder if others did it much better. Dev.to, a developer community, has its code open-sourced, which shows how it generates feeds for its users.
I am still not used to CSS custom properties that their smart usages always amaze me. I would have never thought to use the custom properties to create staggered animations.
Whether money is speech or not, the current political systems suffer from elitism and, as a reaction, populism. Quadratic payment, where your nth vote costs you n, is an experiment to reflect people’s preferences more accurately.
I participated in a two-day Lab Days last week in LA for our colleagues in Animation Studio. The event was like hack days, but different in three aspects: first, we weren’t expected to work days and nights. Second, we didn’t come up with the ideas but were assigned to the projects which had eager stakeholders. Third, we were expected to present a usable product at the demo. (The organizers intentionally named it Lab Days, not Hack days to convey the different expectations)
The second and third differences put a lot of pressure on me. I couldn’t just call it a day because I knew how painful the problem was to the stakeholders. At the same time, the result has to be solid. After our demo, where my stakeholder jumped up and down, I was fried. I didn’t work longer than regular hours, but I was so intensely focused. I don’t believe I can do this every day, but it was fun to understand a problem, ideate a solution together, and create a working prototype in two days.
This Twitter thread about preventable problems prompted me to read more about premortems. I can now see that people are incentivized to chase after highly-visible projects since it is hard to prove that one is an unsung hero. Premortems look like an excellent way to detect and reward people who discover preventable problems and prevent them.
Yarn, one of the two most popular package managers, has received a major update. As the article describes, a lot has changed, including backward-incompatible features such as Plug’n’play and protocols. I am afraid these won’t work with the existing libraries on npm.
Microsoft announced an exciting evolution of Puppeteer named Playwright. Its APIs are more suitable for testing thanks to setTimeout-free automation, which is a crucial improvement.
As UI developers, we are usually at the end of the dependency chain. We always wait for our requirements, designs, and APIs. So I welcome any tool that can remove that dependency. Mirage JS seems to be able to unblock us from backend dependencies and enable more iterations and experiments.
I joined a meeting this week where we discussed how to handle error states. And it was hands down the best meeting experience. The facilitator sent an agenda long before, took notes of discussions, spared plenty of time to create action items, and shared the summary of the meeting on the same day. It was a rare find even at Netflix. This meeting will be my standard going forward.
Even in a transparent workplace like Netflix, achieving alignment across different teams is hard. The company and the orgs have a high-level strategy; but each team plans its roadmap autonomously, which often doesn’t consider interdependencies. This article suggests that cross-functional projects call for different organizing methods.
When I think about lock-ins, I often think about vendor lock-ins, such as AWS or JIRA. But my opensource tech stacks have lock-in effects as well (since I can’t easily change my code), and I should be mindful of it.
No Code is trending in the tech industry at the moment. Engineers are expensive, and products take too long to build. The article reacts to the movement. I liked the parallel between this generation of tools and the old drag-and-drop website editors, which failed to replace all UI engineers.
This article, What Happens When Your Career Becomes Your Whole Identity, caught my eyes this week. I’ve always valued work-life balance when I started working. While my professional achievements are significant to me, they never defined me. To some degree, the separation was easy because no one knew of the companies I worked for for the first seven years.
After I started working at Netflix, people who I meet for the first time know of me as a “Netflix engineer.” Who I am is less impressive to them than where I work. At first, I appreciated the new respect and interests my job has brought to me. But now I worry that this prestige would be too hard to let go, especially when I keep measuring myself against my peers and friends.
The article has several recommendations to battle this trapping; I found it most helpful to broaden my perspective to see my career in terms of not my company or title, but skills and greater goals. It will be hard to let go when the time comes. But I hope the article helps me in the future.
It is an interesting read because I haven’t seen many “real” unit tests in real life. Most teams I worked at chose not to mock/fake things out because of difficulty. But I agree with the premise that the unit tests are useful only in some instances.
Private fields (fields that start with #) are part of Class fields proposal, which is at stage 3. This StackOverflow question helped to clarify the differences; the core is that private keywords check at compile-time and private fields check at runtime.
This annual survey made me appreciate that startups don’t happen overnight. Looking at the age of the startups, most have been around for more than three years, but yet, most are not profitable.
This week starts a new year for me after a long relaxing vacation. I don’t remember anything I was working on before the holidays, but I will be fine. Looking forward to this exciting year 💪! (especially with the US election…)
A long (20-min long!) summary of popular ideas on engineers’ career growth frameworks. Of all the ideas, the most important is that the cultural values and the growth framework should be aligned.
This company iwantmyname challenges the assumption that pay differences must exist for hiring and retention. Instead, they opted to pay everyone the same, regardless of role, experience, or cost of living and have done it for ten years now.
In short, the term “minority” disregards the power struggle aspect of the label and dehumanizes those groups. Use “minoritized people” to acknowledge that people aren’t born minorities, but made into them.
This article is about AI but applies to other fields as well. Defining a problem is often the hardest part of the complex problems. Creating codified and testable definitions will orient the discussions. Nothing is worse than the moving goalposts.
Edge computing, or local computing under limited connectivity and bandwidth, will open up new use cases in the coming decade. Current use cases summarized by Amazon’s CTO.
GraphQL’s flexibility is a challenge when the consumers are not familiar with the convention of the API since each provider can handle edge-cases (errors, timeouts, and so on) differently.
This issue is the last issue of the year (and the decade!). If we look back, we all had both proud and regretful moments. Regardless, don’t forget that we surely have learned and achieved something this year.
Bullet points push the burden of communication to their readers. Through narrated proses, writers take responsibility for communication. Our arguments will be ordered, prioritized, grouped, and connected, which will bring more clarity to the ideas.
An in-depth, yet wide look at what it takes to broadcast a global eSports event. The Group’s end-to-end involvement from installing local custom PCs for progamers to dealing with local ISPs for network bandwidth is impressive.
According to its new yearly release cycle, ECMAScript will release a new version next year. This list shows the upcoming features such as dynamic import() and globalThis.
Honeycomb wrote on a distributed processing optimization. I like how AWS Lambda performed faster than long-standing servers thanks to its fast scaling.
UK government published a guideline to manage cloud lock-ins. It is a sensible guideline, but I am more impressed by the fact that a government announced such guidance.
Of all the benefits and perks from working at Netflix, I love meeting and learning from smart people with intriguing, diverse backgrounds the most. I had a chance to talk to an iOS engineer about my thesis that all platforms are doing the same architecture (currently component architecture with unidirectional data flow) with different lingos. As he had a game development background, he told me that that idea, especially unidirectional data flow, is an old idea (game loop) that originated from game development.
He also pointed out that since Apple and Google own mobile platforms, mobile developers tend to wait for those two to solve the architectures. But because no one entity controls the web, web developers try many different ideas like Angular 1’s MVC, React’s Components, or Flow Architecture.
I don’t often hear things that change my perspectives, but those two were definitely eye-opening. So I was very grateful after the discussion. Maybe for your new year resolution, try reaching out to people you don’t usually talk to more!
This is an excellent article full of great quotes and links. The message is simple: no technology will change how people behave. I had the same message when I presented the progress on GraphQL adoption to my org.
It’s this time of the year again. Here are my takeaways: 1. GraphQL’s sustained popularity and interest. 2. Typescript’s sustained popularity and interest. 3. Svelte’s surprising amount of interest and awareness (75% awareness is high considering its short history).
I heard about Entities Components Systems from the said conversation and looked it up. From my understanding, it is an architecture to optimize the memory access pattern to overcome slow memory speed relative to CPU speed. Not relevant to web development, but I still found it cool 😎
With new technology comes a new attack surface. GraphQL’s flexibility exposes a new attack surface that traditional prevention and monitoring tools (request based rate-limiting and telemetry) can’t handle well.
Remember the freaky, yet exciting Google Duplex announcement? My family finally got to try it yesterday, which got me to wonder if Duplex further adds more stress to the more vulnerable workers. This Verge profile, albeit a little dated, describes how the technology works in the real world.