Skip to content
View maitrungduc1410's full-sized avatar
💪
Keep chasing your dreams!
💪
Keep chasing your dreams!

Organizations

@speechlab-ntu @NTU-SpeechLab

Block or report maitrungduc1410

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
maitrungduc1410/README.md

Duc Mai: I work one layer below. Software engineer at TikTok Search in Singapore, working on native, runtime and rendering.

L0 Surface L1 Now L2 Native L3 Runtime L4 Rendering

ducmai.me · LinkedIn · X · Viblo · Email

L0 · Surface

Some behaviour only feels possible inside a big native app: hero transitions, waveform scrubbing, frame-accurate video editing, a Node runtime with no server. I build that behaviour one layer below where product code usually stops, and ship it as open source.

By the numbers: npm installs a month across my packages, GitHub stars on these projects, GitHub followers, and article views on Viblo.

As of 2026-10-12, from the public GitHub, npm and Viblo APIs. ↓ One layer down: L1 · Now

L1 · Now

Since February 2024 I have worked on client performance for TikTok Search in Singapore: how fast the first screen appears, how smoothly results scroll, and what the image and video pipeline costs inside a very large iOS and Android app. I can describe the discipline; the numbers stay inside, which is why everything below is my own code.

A lot of that work sits on Lynx, and a regression rarely lives in one layer: the job is following it from a component, across the bridge, into Kotlin or Swift, and down to the frame that dropped. I also run AI agents like a small team, with the guardrails doing the real work.

The agent loop: plan, build, review, verify, and around again. Every step leaves an artefact the next one can check.

↓ One layer down: L2 · Native

L2 · Native

Swift and Kotlin on React Native's New Architecture, with no animation on the JS thread. All of them are still maintained, which is the part most side projects fail.

react-native-video-trim: frame-accurate video trimming for React Native. react-native-loader-kit: 30+ native loading indicators for React Native. react-native-shared-hero: native shared-element transitions for React Native. react-native-signature-ink: true-native signature capture for React Native. react-native-waveform-player: a native audio waveform you can play and scrub. react-native-waveform-recorder: a high-performance audio recorder with a native live waveform.

The rest of the family
Module What it does Stars Installs / month
react-native-zalo-kit The Zalo SDK for React Native. 59 827
react-native-pointer-location Android's pointer-location developer overlay, as a module. 3 1.7k
react-native-new-feature A lightweight "What's New" screen for your app. 20 102
react-native-textflow Native fluid text reflow. 4 56
react-native-tooltipster Truly native tooltips. 3 108
ffmpeg-kit A community-maintained rebuild of ffmpeg-kit for Android, iOS and React Native, with 16 KB page support.

↓ One layer down: L3 · Runtime

L3 · Runtime

Below the framework there is a runtime, and below the runtime there are syscalls, memory and wires. Boot the first one on vivari.run.

vivari: run Node, Bun and Python directly in your browser, with no server and no install.

socket.io-mesh-adapter: Socket.IO pods talking in a mesh, with zero broker hops. node-scp-async: a promise-based SCP client for Node.js.

↓ One layer down: L4 · Rendering

L4 · Rendering

The bottom of the stack: frame budgets, vsync, and what actually gets redrawn.

konva-inspector: React DevTools for canvas apps, with a render heatmap. double-raf-demo: why one requestAnimationFrame is not enough.

The lab: famous behaviours, rebuilt from first principles

Everything else lives on my repositories page.

Writing

A million article views on Viblo, none of it in English. It is an archive rather than a current signal: Docker, Kubernetes, micro-frontends and Vue, which is how a lot of Vietnamese developers first met those tools.

Say hello

Working on browser runtimes, React Native internals, or something that has to hold at scale? Email me or find me on LinkedIn.

$ sudo hire me
A replay of the ducmai.me terminal: whoami, layers, and sudo hire me, which opens an email to maitrungduc1410@gmail.com.
Watch a snake eat my contribution graph
How this page is made

Every image here is an SVG drawn by scripts/render.mjs: no GIFs, no JavaScript, no image service. Motion is CSS keyframes, the Geist font is subset to the exact characters each image uses and inlined, and with reduced motion turned on everything rests on its final frame.

The numbers come from the same public snapshot that ducmai.me refreshes every week. A scheduled workflow re-renders the images and this README from README.tmpl.md and commits the result, so nothing on this page depends on a third-party server when you view it.

↑ Back to the surface · ducmai.me

Pinned Loading

  1. vivari vivari Public

    Open-source MIT WebContainer alternative. Run Node, Bun and Python 100% in the browser: Node's real lib/, real npm/yarn/pnpm, Next.js 16 RSC, Vite, SvelteKit, SQLite and Postgres, plus a CDP step d…

    JavaScript 78 17

  2. react-native-loader-kit react-native-loader-kit Public

    Native loading and progress indicators for React Native. 50 built-ins and 50 progress designs, powered by LoaderKit, with the same motion on Android and iOS.

    TypeScript 238 11

  3. react-native-video-trim react-native-video-trim Public

    Video trimmer for React Native App

    Swift 177 47

  4. node-scp-async node-scp-async Public

    Fast, safe SCP and SFTP for Node.js, with a CLI and a GitHub Action. Works with Dropbear, OpenWrt and devices without SFTP

    TypeScript 81 10

  5. WebRTC-Demo WebRTC-Demo Public

    WebRTC demo on Web, Android and iOS

    C# 75 24

  6. konva-inspector konva-inspector Public

    🛠️ Browser Extension for debugging Konva app

    TypeScript 45 5