Yuta Imazu
I’m a software engineer living in Tokyo, Japan.
Among many other things, I’m fascinated by
- Systems programming (operating systems, compilers, etc.)
- Database systems
- Distributed systems
- Audio programming (synthesizers, effects, etc.)
Projects
Low-level
yagura
A Unix-like operating system for x86. GitHub
microcosm
A minimal KVM-based virtual machine monitor. GitHub
Bare-metal programs
Programs written for bare-metal environments.
- x86-bare-metal-raytracer: Ray Tracing in One Weekend on x86 bare-metal
- x86-bare-metal-donut: donut.c on x86 bare-metal
Programming language implementations
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
squalodon
An embedded relational database management system written from scratch. GitHub
- SQL parser
- Planner
- Execution engine
- Join order optimization
- Pluggable storage backends
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
zseqd
A distributed monotonically increasing sequence generator. GitHub
> INCR myseq
(integer) 42
> INCR myseq
(integer) 43
CLI tools
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.
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 GitHub
primesynth
SoundFont-powered MIDI synthesizer. GitHub
Web
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
Text processing
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]);