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.

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

Try online

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.

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]);