IN PROGRESS
Technical Stack
Short opinions
Things I have an opinion on after building with them. Mostly short. Sometimes wrong. Drafts get updated rather than republished.
I stopped reaching for npm or pnpm. Bun is the default. Here is the math.
Cold install on this portfolio repo: bun 1.4s, pnpm 6.2s, npm 11.8s. That's 8× faster than npm, 4× faster than pnpm. The numbers compound — every fresh clone, every CI run, every "delete node_modules and try again" gets that gap back.
But speed alone wouldn't have moved me. The thing that did: bun is the script runner, the package manager, the test runner, the bundler, and a node-compatible runtime. One tool. No ts-node for scripts, no jest config, no tsx shim, no pnpm exec. bun foo.ts just works.
bun add three # install
bun run dev # next dev
bun test # vitest-compatible
bun foo.ts # run TS directly, no compile step
bun --hot server.ts # hot reload, no nodemonThe gotchas are real but small. Some packages still ship CJS-only with sketchy ESM shims that confuse Bun's resolver. Workaround: bun add --trust for postinstall scripts, and bun pm ls to see what's actually resolved.
Where I still reach for npm: publishing to npm registry (Bun publishes too but the npm cli is more battle-tested for that one flow). Where I still reach for pnpm: large monorepos with workspace protocol weirdness (Bun handles workspaces, but pnpm's resolution is more predictable for 50+ package trees).
For everything else — new project, CLI script, Next.js app, Tauri sidecar — bun init and move on.
Core Identity
Profile
Thanuka Sehasna Perera
Game Developer · GPU Architecture · Systems Builder
FOCUS
GPU / Game Dev / Systems
ENGINES
Unity · UE5 · Ka3d
STATION
BitByBit (Part-time)
STATUS
Open — new contracts
I build at the intersection of game development, GPU architecture, and systems engineering. Whether it's shipping a Unity game, reverse-engineering NVR firmware with Wireshark, or orchestrating Cloudflare microservices for a live client platform — I care about the full stack from silicon to screen.
Currently embedded at BitByBit and driving CROW — a unified customer interaction intelligence platform built by a 6-person team for two live clients. I write TypeScript, C++, Python, and enough Rust to be dangerous.
3+
Years building
3K+
Commits shipped
2
Active clients
6
Team @ CROW
The Graphics Command Center lies by default
Drop brightness by 10, push contrast by 10. The panel looks more honest immediately — Intel ships everything biased toward "punchy at the showroom."
VMD is a one-way trap on dual-boot
Windows turns Intel VMD on by default. Install Linux on top without disabling VMD first in BIOS and the friendliest outcome is a corrupted partition table. Disable it before partitioning, not after.
Arc is shockingly good at AV1
The A-series hardware encoder beats consumer-tier NVENC at AV1 quality-per-bitrate. The catch: the entire stack — drivers, Quick Sync runtime, ffmpeg plugin chain — has a worse vibe than NVIDIA. Worth it for archive use, painful for live.
Let's build
something sharp.
Open to game dev contracts, GPU-adjacent engineering, systems research, and high-craft creative tech projects. If you're building something that needs both depth and polish — let's talk.
Or hit ⌘K for everything in one place.


