Revalidate at: 2025-12-19 19:39:53

2025 12

My new hobby project....

2025 11

I'm looking for a new job....

2025 10

The joys of vibecoding....

From handles to hosting....

2025 09

The protocol is the API....

matplotlib -- the de-facto library of plotting in Python. seaborn -- the golden tool for statistical...

Programming with proofs....

2025 08

What is the type of 2 + 2 = 4?...

2025 07

A taste of Lean....

2025 06

I heard you like linting....

Personal update post....

A layered module system....

Quoting for modules....

2025 05

Why streaming isn't enough....

One does not simply serialize a module....

What do HTML, GraphQL, and RSC have in common?...

You wouldn't download a site....

Islands, but make it fractal....

Tags on both sides....

2025 04

Two worlds, two doors....

Learn TypeScript cursor-rules for AI development. Covers best practices, JSDoc, structure. Different...

Composing across the stack....

Turning your API inside-out....

Two things, one origin....

2025 03

TypeScript announced a full rewrite of TypeScript in Go. In testing, this rewrite has achieved a 10x...

2025 01

TypeScript 5.8's new erasableSyntaxOnly flag enforces pure type annotations by disabling enums, name...

2024 12

TypeScript is coming to Node 23. Let's break down what that means....

2024 09

To quote myself in a most recently yet-to-be-published paper: 💪 The ability of deep neural networks...

Learn how to extract the type of an array element in TypeScript using the powerful `Array[number]` t...

2024 08

Learn how to publish a package to npm with a complete setup including, TypeScript, Prettier, Vitest,...

Enums in TypeScript can be confusing, with differences between numeric and string enums causing unex...

2024 07

Is TypeScript just a linter? No, but yes....

It's a massive ship day. We're launching a free TypeScript book, new course, giveaway, price cut, an...

2024 06

Learn why the order you specify object properties in TypeScript matters and how it can affect type i...

Learn how to use `corepack` to configure package managers in Node.js projects, ensuring you always u...

2024 04

Learn TypeScript by setting up a pro environment, using advanced IDE features, and mastering type an...

Learn how to strongly type process.env in TypeScript by either augmenting global type or validating ...

2024 03

Discover when it's appropriate to use TypeScript's `any` type despite its risks. Learn about legitim...

Learn why TypeScript's types don't exist at runtime. Discover how TypeScript compiles down to JavaSc...

Improve React TypeScript performance by replacing type & with interface extends. Boost IDE and tsc s...

In this book teaser, we discuss deriving vs decoupling your types: when building relationships betwe...

Learn how TypeScript's new utility type, NoInfer, can improve inference behavior by controlling wher...

Learn how to set up TypeScript to bundle a Node app using pnpm, Node.js, TypeScript, and ES Modules ...

TypeScript 5.5 introduces type predicate inference from function bodies, simplifying type narrowing ...

Learn why it's not possible to restrict the type of children in React components with TypeScript....

Learn how to make TypeScript functions more flexible and type-safe by using type parameters instead ...

Learn how to handle errors when using Array.reduce to transform arrays into objects in TypeScript. F...

2024 02

Whether you use let or const in TypeScript affects whether or not their values can be changed, and h...

Learn how to use typescript generics to pass types in constructs like Array and Set....

In TypeScript, the `as never` type assertion is occasionally needed when dealing with unions of func...

Using the method shorthand syntax for function annotations in TypeScript can result in runtime error...

2024 01

Learn about the limitations of React's `forwardRef` TypeScript and discover a solution to enable inf...

UI = f(data)(state)...

2023 12

The limits of my language mean the limits of my world....

TypeScript boosts productivity but faces pitfalls like type mismatches, null values, & puzzling erro...

2023 11

TypeScript 5.3 introduces relaxed rules around readonly arrays and improvements in const type parame...

Understand how Type Predicates work in TypeScript, using an example of filtering a mixed array of el...

2023 10

Learn how to provide a TypeScript playground when asking for help with your TypeScript questions, ma...

Learn how to work with events in React and TypeScript, from onClick to onSubmit....

A step-by-step guide on setting up ESBuild to bundle a Node application....

When using '--moduleResolution' with the option 'nodenext', it is necessary to add explicit file ext...

2023 09

Learn how to add TypeScript to your existing React project in a few simple steps....

2023 01

It has been a while since my last update. And to be fair, 2022 was a very boring and event-less year...

2022 05

Yep, that’s the title There’s no click-bait. Though I’m at home working remotely, meaning that I hav...

2022 01

Hey again. It has been a year since I last talked about building a blog with Notion. A lot has chang...

2021 07

Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)...

2021 04

!!! success "🛸 我免费啦" (^^ゞ 从 4 月 1 号开始的十天自我隔离终于结束啦! 不知道大家有没有发现,不过我确实 人在英国,刚下飞机。今天是我十天隔离的最后一天,明天我就正式可以...

2021 02

!!! bug "🔥" An update in 2022: Revisiting blogging with Notion in 2022. Yup, yup, yup! (Paimon nois...

Rendering optimizations that come naturally....

2021 01

Welcome 2021. 昨天(2020/1/1)我也才刚刚从北京回家的高铁上下来,现在我坐在刚搬来的新家里,用着陪伴了我快 3 年的机械键盘,写下这份迟到了一天的碎碎念。希望大家不要嫌弃。...

2020 08

起因 这件事情还要从我校为毕业生收拾行李开始讲起。今年六月末北京疫情复发,这一波直接让我们北京高校毕业生无法返校,个人行李物品必须由学校老师代为整理快递回家。这件事情让同级的同学们非常不满,于是微博知...

2020 07

Come waste your time with me....

2020 06

After trying many apps, my favorite macOS color picker remains the built in utility. It's only shown...

I had an idea for caching SVG paths. Not the usual kind of async request caching of remote SVGs, but...

2020 05

If you want to add custom CSS to a website without using a browser extension, you can proxy the site...

SWR is a React hook for data fetching that features a cache for requests. This is generally used to ...

2020 03

There is no previous sibling selector in CSS. Instead, we can achieve the same behavior by using fle...

It's difficult to transition between themes smoothly. Adding a CSS transition to every element negat...

Nine days after first writing this post, the Next.js team landed support for paths in tsconfig.json ...

2020 02

The text-decoration: underline CSS property provides insufficient control over the underline styling...

2020 01

I have trouble falling asleep. Too many ideas and thoughts from a day with too little activity, I su...

Let clean code guide you. Then let it go....

A personal reflection....

2019 12

So which one should I use?...

Styled System is an excellent alternative to writing ad-hoc style declarations in your React compone...

Getting a closure on JavaScript....

2019 11

My crappy superpower is solving difficult problems as I'm falling asleep. Doesn't sound too bad, rig...

A favorite quote from an old friend. I really admire that there are people of all ages that are able...

I find great satisfaction in writing beautiful code. Very few will ever see this effort and apprecia...

2019 10

Have you noticed that some people write extremely well? Take Aaron Swartz' article "Believe you can ...

2019 08

I am consistently unhappy with my creative output. My job title includes designer, but I'm not good ...

Dead code elimination by convention....

2019 07

They’re not burritos....

Turning an idea into a talk....

2019 03

I created Dusk to make my dock look more visually harmonious. LiteIcon does a great job of automatin...

A change starts with a story....

Four principles to set you on the right path....

I began my Computer Science degree with an intensive introduction course in C. We used makefiles to ...