Skip to content
View nguyenrot's full-sized avatar

Block or report nguyenrot

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
nguyenrot/README.md

Nguyên

Software Engineer · Đà Nẵng

I build backend systems, developer tools, and things I want to exist.

Warm stacked plates with K and N cut through, one inner plate in copper

Selected work

GõViệt

Vietnamese input for macOS. A Unikey-style menu-bar app: type in every program without switching input sources.

Telex keys v i e e j t composing to việt, with English text staying as text

Rust composes Telex and VNI, then restores English so text stays text, not tẽt. Swift injects per app — fast, paced in terminals, select-and-retype in Chromium — and ignores its own GVIT events.

Architecture

Pure composition in Rust (tone placement, syllable validation, fourteen TSV corpora) → C ABI with fixed-size buffers, no allocation on the hot path → Swift EventTapManager, TextInjector, and per-bundle app profiles. A watchdog polls tap health. The signing identity is pinned so Accessibility survives rebuilds. English words that are also valid Vietnamese syllables stay in known_limitations.tsv rather than being papered over. Not notarized yet; the DMG is signed with an Apple Development cert.

Repository · Releases

Lattice

One content model, two languages. Nuxt reads; Django and PostgreSQL publish — an API boundary so the reading surface can move on its own.

lattice.kynguyen.cc

Lumi

Answers arrive as a stream. A per-thread SSE buffer renders each part as it lands; incomplete Markdown is a state to handle, not a bug.

lumi.kynguyen.cc

Citadel

The rules run without a screen. A headless simulation plays stages with bots before the Canvas art is allowed to change.

citadel.kynguyen.cc

The rest of the ecosystem lives at kynguyen.cc.

How I work

Most of what I ship sits where backend correctness meets software people actually use: APIs that don't silently lie, migrations that don't surprise anyone on Friday, boundaries you can point to. I write the dull parts well — the rest gets easier.


Elsewhere

kynguyen.cc · [email protected] · LinkedIn

Pinned Loading

  1. me me Public

    Digital Immortal Cultivator — Personal portfolio (me.pkn.io.vn) | Next.js 16 + Three.js + Framer Motion

    CSS

  2. mempalace mempalace Public

    Python

  3. nguyenrot nguyenrot Public

    GitHub profile README for Nguyên

  4. Screenshot-Capture Screenshot-Capture Public

    JavaScript

  5. x106-api x106-api Public

    Centralized REST API for X106 ecosystem — Go + Chi + MySQL + JWT

    Python

  6. goviet goviet Public

    Bộ gõ tiếng Việt cho macOS kiểu Unikey — Rust engine + Swift shell (CGEventTap)

    Swift 4 1