Skip to content
View kjj6198's full-sized avatar
💻
Tech always win
💻
Tech always win

Organizations

@DnD-mag @hinadev-ai

Block or report kjj6198

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

Hi, I'm Kalan

I'm a software engineer from Taiwan, living in Fukuoka, Japan, and the founder of hinadev.

I spent 5.5 years as a frontend engineer and tech lead at LY Corporation (LINE Yahoo), then ran a five-person team as VP of Engineering at a manufacturing SaaS startup. Now I lead AI product work as a freelance tech lead and build my own products on the side.

link.kalan.dev | Blog | X

Now building

言鈴 KotoSuzu landing page with a 10:00 timer between two speakers Realtime voice language exchange between Taiwan and Japan. Every night you talk with one person from the other side for 20 minutes, half in Mandarin and half in Japanese. The app switches languages when time is up. HinaCode landing page: Agent harness with taste and focus A desktop app for running Claude Code and Codex side by side, each in its own git worktree. It stays quiet while the agents work and tells you which one needs you.
Bar chart of time to first command. Firecracker restore takes 29 ms, a normal VM takes 9.7 s Tiny Firecracker microVMs for AI agents. Each sandbox restores from a snapshot of a booted VM and answers its first command in 29 ms. I benchmarked gVisor and Cloud Hypervisor before picking Firecracker. English and Japanese subtitles floating over a slide Live English ⇄ Japanese subtitles on top of your slides. A macOS menu bar app built on Apple's on-device Speech and Translation frameworks, so it needs no API key and no audio leaves the Mac.

Side projects

Kalan's Room, a 3D room with a desk, guitar, and bookshelf

  • Kalan's Room is my portfolio as a 3D room. Click the desk, guitar, or bookshelf for a story.
  • 看見數字背後 visualizes Taiwan's sexual assault statistics from 2008 to 2025.
  • 勞工大代誌 visualizes Taiwan's wages, working hours, and labor history from 2012 to 2025.
  • meeto-iot shows my next macOS Calendar event on an OLED screen over Bluetooth LE.
  • ts-arib-parse reads ARIB STD-B24, the subtitle format of Japanese TV, out of MPEG-TS streams.
  • pomodoro is an Arduino pomodoro timer built on timer interrupts.
More
  • cloudflare-images-cli is cfi, a Rust CLI for Cloudflare Images. brew install kjj6198/tap/cfi
  • go-gui lets you play Go against KataGo, with live analysis and game review.
  • Podcast is the website for 八百屋 Boys, a Mandarin podcast about life and work in Japan.
  • refined-slack-hubot is a Hubot-style Slack bot for GitHub releases, deployments, and review requests.

Pinned Loading

  1. hinadev-ai/hinacode hinadev-ai/hinacode Public

    Yet another coding agent control pane built with Electron and React

    TypeScript 1

  2. agent-sandbox agent-sandbox Public

    sbx: Firecracker microVMs on demand

    JavaScript

  3. live-translation live-translation Public

    Live English ⇄ Japanese subtitles for your talks. Runs entirely on your Mac. No account, no API key, no audio sent anywhere.

    Swift

  4. cloudflare-images-cli cloudflare-images-cli Public

    A simple Rust cli to manage cloudflare images

    Rust

  5. build-your-own-x build-your-own-x Public

    Forked from codecrafters-io/build-your-own-x

    (forked) 🤓 Build your own (insert technology here) - added issue and website. PR welcome

    Markdown 489 64

  6. My default AGENTS.md My default AGENTS.md
    1
    ## Principles
    2
    
                  
    3
    * Infer the user's intent and task scope from instructions and prior conversation context.
    4
    * Choose the simplest implementation that fully solves the problem. Do not reimplement common functionality when a suitable library exists.
    5
    * Prefer deleting code over adding code. The best code is code that does not need to exist.