LEVI(1)Levi's ManualLEVI(1)

NAME

levi - Levi van Daalen, software engineer from Dordrecht

SYNOPSIS

DESCRIPTION

I'm Levi, a software engineer from Dordrecht. At Notive I mostly write PHP, on eCommerce integrations with platforms like Shopify. At home it's mostly Zig, and my main project there is Oubliette, a dungeon crawler that's in the making.

I've played the trumpet since I was nine, which is how a language for writing music ended up on this page. I also really like taking photos, with my Olympus E-P7; the newest ones are under FILES.

This page is a man page. Scroll with j and k, search with /, or press q for a shell.

PROJECTS

doka
A small, fast photo editor for Linux that Claude Code can drive live. Edits never touch the original, and an export keeps every bit of the camera's metadata. See doka(1).
oubliette
My main project: a first-person crawl up out of the pit a village throws its dead into, made in Zig with raylib. It's in the making. See oubliette(6).
codetta
A small compiled language for writing music as code. A .coda file compiles to MIDI, and the editor plays it right in the browser; try the one under EXAMPLES. See codetta(1).
bebop
A web framework and ORM for Zig, inspired by Symfony. I mostly wrote it to learn how an ORM works, and the SQL underneath. See bebop(3).
nvim
My Neovim config, built on lazy.nvim. See nvim(5).
json-parser
A JSON parser in C, written to really understand C and managing memory by hand. See json-parser(3).
sudoku
Sudoku in the terminal, written in C++ to learn how a terminal app does its own rendering. See sudoku(6).
wcpp
wc(1), rewritten in C++ to learn how to write a command-line tool. See wcpp(1).
InterpreterInCsharp
An interpreter in C# for a small scripting language, written to learn how an interpreter works, with Thorsten Ball's Writing An Interpreter In Go as a guide. See InterpreterInCsharp(1).
xadrez
An album I made with friends during covid, as IGNIS: seven songs, with me on trumpet, flugelhorn and synth. See xadrez(7).

EXAMPLES

codetta play hello.coda open in the editor

tempo 92
time_signature 4/4

chord Amin = [A3 C4 E4]
chord Fmaj = [F3 A3 C4]
chord Cmaj = [G3 C4 E4]
chord Gmaj = [G3 B3 D4]

phrase changes = Amin.whole Fmaj.whole Cmaj.whole Gmaj.whole
phrase roots   = A2.whole F2.whole C3.whole G2.whole

phrase hook =
  E5.quarter D5.eighth C5.eighth D5.half
  C5.quarter B4.quarter A4.half
  E5.quarter G5.quarter E5.quarter D5.quarter
  C5.half B4.half
  dynamic @0 mp
  dynamic @2 crescendo to f over 2 bars

section intro =
  track harmony: changes arp x2
  track bass:    roots

section verse =
  track lead:   hook
  track chords: changes
  track bass:   roots

song = intro verse * 2

ENVIRONMENT

LANG
zig, c, typescript, python, php, flutter
EDITOR
nvim
SHELL
zsh
OS
cachyos, macos
WM
hyprland
TERM
kitty
LIBS
raylib, react, wasm, tone.js, libvips
WEB
laravel, vue, next.js, payload, vite
CAMERA
olympus e-p7

FILES

SEE ALSO

github(1), linkedin(1), mail(1)

penguin-vdLEVI(1)