We live in a world where we can build what we imagine, and someone may need it. If I can see a problem technology could solve—or one that may emerge in the future—I want to try building something for it.
I want to see for myself how the ideas and theories in my head affect the world.
EngineeringProduct DesignBusiness
Now Right now
// a few things about me
Currently
Open source & personal projects
Editor
Codex, ex: Neovim
Interests
Technology / Product / Business
Off-screen
Life with my wife and daughter
I want to build what comes to mind
Where I've been, where I'm going
01 / Before
I took leave from university and abandoned my attempt to travel around Japan by moped. I switched to hitchhiking and felt my own powerlessness as I relied on other people's kindness. After leaving university, I used my English in an import business. I became an engineer so I could build services myself.
02 / Now
Image conversion, text compression and search, code generation and analysis, and more. Turning my interests into something real with AI. Building, trying, and testing my ideas.
03 / Next
I want to think about products and business from the customer's perspective and contribute to the happiness of the people involved.
Giving shape to problems I see today and ones that may arise in the future. Someone may need them, so I want to make them available for everyone to try.
IMAGE PROCESSING
lazy-image
Released · v1.5.0
A Node.js image-processing alternative, inspired by using sharp at work.
Add tenant-specific features to SaaS, with shared controls for permissions, approvals, and auditing.
Loading Playground…
i18next-turboTRY IT
Extract translation keys from JavaScript and TypeScript. Try the Rust engine behind this bilingual site, right on your device.
A single-file Wasm demo of the Rust/SWC extractor from i18next-turbo 0.5.3, pinned at commit 9f53e6a. Supports t, i18n.t, Trans, and selectors. Watch mode, cross-file references, locale synchronisation, and Node plugins are outside this demo. Unresolved keys remain in diagnostics. Workers stop after at most 15 seconds.
Comparison uses official i18next-cli 1.75.3 extraction code with SWC Wasm 1.16.18 and Turbo Wasm. CLI Wasm (~18 MB) loads only for comparison. Both use en/ja, t, i18n.t and Trans; comment extraction is disabled and unspecified namespaces match as translation. Timings exclude CLI startup, file I/O and synchronisation. No diagnostics does not guarantee full coverage.
lazy-imageTRY IT
Explore image size, quality, and processing time. Compare lazy-image and other Wasm libraries using the same image.
01 / SIZE POLICY
Search for quality that meets a size target
Search from quality 45 to your chosen upper bound. Strict mode returns an error if the target is missed, without producing output.
02 / PRIVATE BY DESIGN
Process images without sending them elsewhere
Re-encode locally with metadata retention disabled. Images are not sent to external services.
03 / PREPARE ONCE
Load and resize once
Encode the same pixels at different quality levels. Inspect processing time and estimated pixel buffer size.
Input and output protections in this demo
JPEG, PNG, and WebP inputs up to 5 MiB / 16 MP. Header dimensions are checked before decoding.
Each Worker runs for at most 30 seconds. Cancelling or navigating away terminates it.
Output format, dimensions, size target, and native browser decoding are checked before display.
Measurements run one Worker at a time, without previews or retained prior outputs. Initialisation, conversion, and output validation are recorded separately, including the first run and repeats after one warm-up. Display-only reruns and RGB PSNR happen afterwards and are excluded from timing. The reference is jSquash decoding plus Lanczos3 at the same dimensions. PSNR measures white-background RGB error, not perceived or equal quality. Execution order, cache, device load, and small sample sizes still affect the results.
View memory measurements from an isolated environment
Each Node/Wasm trial runs in its own process and records the OS peak RSS. This measures the whole process, including initialisation, input, and Node—not this browser or Cloudflare Workers. GPU memory and quality analysis after RSS collection are excluded.
qztTRY IT
I wanted to trace conversation context and its evidence. Enter an article or other text here to try compression, search, and restoration.
A browser adapter for QZT v0.1/core. It uses Zstd Wasm for real compression and searches or restores the same compressed data. Search restores and scans all chunks; range restoration processes only the required chunks. QZI indexes, dictionaries, and imported .qzt files are unsupported. The format can be verified and exported with the official CLI. Input is held only in the loaded page's memory; each Worker stops after at most 15 seconds.
cdn-security-frameworkTRY IT
What policy candidates and Worker code does OpenAPI produce? Change the input and inspect the diagnostics and generated content.
A browser adapter using the official OpenAPI analysis and policy candidate generator, plus profile Workers generated by the official compiler. Generated code applies global request settings. Authentication mapping, secrets, and route-level controls are not generated automatically. Unsupported items remain in diagnostics; code is neither executed nor deployed. Uses pinned public main commit 27211fa9 (2.0.0-rc.0).
CodebaseCanvasTRY IT
Explore code structure and dependencies alongside their evidence. Open the sample graph or your own graph.json to investigate.
Supported relationships: contains / imports / injects / calls / exposes / depends_on. reads / writes are reserved by the official v0.1 contract and unsupported by the current validator.
Graphs and input files stay on your device. Imported graph paths are displayed only; source files are not fetched automatically. Expand methods from a selected class. Analyse new source code with the local CLI, then load the updated graph.json.