Yuta Imazu
I’m a software engineer living in Tokyo, Japan.
Among many other things, I’m fascinated by command-line apps, database systems, distributed systems, and synthesizers.
Projects
indexa
A locate alternative with incremental search. GitHub
Designed to utilize multiple CPU cores and minimize memory usage.
Inspired by Everything, which is another great file locator.
Bare-metal programs
Programs written for bare-metal environments.
- yagura: A Unix-like operating system for x86
- x86-bare-metal-raytracer: Ray Tracing in One Weekend on x86 bare-metal
- x86-bare-metal-donut: donut.c on x86 bare-metal
mochi
Lua runtime implemented in Rust. GitHub
1local function factorial(n)
2 if n == 0 then
3 return 1
4 else
5 return n * factorial(n - 1)
6 end
7end
8
9local n = tonumber(arg[1] or 10)
10print(n .. "! = " .. factorial(n))
$ mochi factorial.lua 12
12! = 479001600
- Bytecode VM compatible with PUC-Rio Lua 5.4
- Lexer and parser
- AST to bytecode compiler
- Incremental mark-and-sweep garbage collection
- Standard library implementation
Databases
qwerk
An embedded transactional key-value store. GitHub
1let db = Database::open("db")?;
2let mut worker = db.worker()?;
3let mut txn = worker.transaction();
4txn.insert(b"key", b"value")?;
5assert_eq!(txn.get(b"key")?, Some(b"value".as_slice()));
6txn.commit()?;
- ACID transactions with strict serializability
- Optimized for multi-threaded workloads with multiple concurrent readers and writers
- Persistence to the disk
zakros
Redis-compatible in-memory database replicated with Raft consensus algorithm. GitHub
Audio and synthesizers
Web synthesizers and audio effects
Various synthesizers and effects utilizing WebAudio AudioWorklet.
- synks: Karplus-Strong string synthesizer
- synxylo: Physical modeling xylophone synthesizer
- syndx: FM synthesizer for electric piano sound
- syntw: Tonewheel organ sound synthesizer
- phaker: Physically-based shaker sound synthesizer
- forma: Formant filter
- web-channel-eq: Ableton Live’s Channel EQ
accent
Implementation of audio reverberation algorithms. GitHub
Synth Playground
Web playground to play with WebAudio AudioWorklet. Try online
primesynth
SoundFont-powered MIDI synthesizer. GitHub
Witchbooru
Image recognition system for anime characters.
Trained with Danbooru data and built on top of DeepDanbooru model.
Deployed as an AWS Lambda function.
beek
A modern REPL-style calculator. GitHub
Web version is built with WebAssembly.
Web services accessible from terminal
Web apps you can use via curl, wget, etc.
Games
TUI games
Games in text user interface.
- fifteen: The 15-puzzle
- codebreaker: Mastermind
- yachtee: Yahtzee
mahjongg
Mahjong solitaire game (aka Shanghai) compatible with GNOME Mahjongg and KMahjongg. GitHub
mckalah
Monte Carlo tree search player for Kalah. GitHub
suffine
Suffix array construction tool/library for huge strings. GitHub
1let text = "I scream, you scream, we all scream for ice cream!";
2let index = IndexBuilder::new(text)
3 .block_size(1024 * 1024)
4 .build()
5 .unwrap();
6assert_eq!(index.positions("cream"), &[30, 44, 15, 3]);