SESSION LIVENKESSLING@TERMINALDATA DEMOROTTERDAM, NLRTM 14:22:07 · UTC 12:22
TIDE4,812▲3.4%RUSTKILN2,207▲1.8%GOWREN1,045▲6.1%TYPESCRIPTLOOM1,390▼0.6%TYPESCRIPTPRSM961▲2.2%RUSTFERN612▼1.4%ZIGSLAB388▲0.9%RUSTDOCK274▼2.3%GOTIDE4,812▲3.4%RUSTKILN2,207▲1.8%GOWREN1,045▲6.1%TYPESCRIPTLOOM1,390▼0.6%TYPESCRIPTPRSM961▲2.2%RUSTFERN612▼1.4%ZIGSLAB388▲0.9%RUSTDOCK274▼2.3%GO
>Noa Kessling · Systems engineer · Rotterdam, NL
DES NOA KESSLING · SYSTEMS ENGINEEROpen to work from Nov 2026

Nine years on databases and developer tooling. Currently independent, previously staff engineer on a payments ledger.

1,837CONTRIBUTIONS · 12M
11.7KSTARS ACROSS REPOS
412PULL REQUESTS MERGED
GP COMMIT RATE · 7-DAY ROLLING · WEEKLY CANDLES
MOST TOP REPOS★ · 7D
WIRE LATEST COMMITSLIVE
14:02TIDEfix(wal): fsync the directory after a segment rotates+48 −12
13:37KILNfeat: content-addressed cache hits across branches+312 −41
12:55WRENrelease v2.4.0: group notes by conventional scope+96 −30
11:20PRSMperf: diff two traces in O(n log n), was O(n^2)+140 −188
10:48LOOMfix: fair scheduling starved one tenant under burst+57 −9
09:31TIDEbench: 1.92 GB/s sequential append on M3, one core+22 −3
09:04FERNfeat: union types and exhaustive match+406 −77
08:16SLABdocs: explain generation checks with a diagram+64 −5
TueDOCKfeat: wildcard TLS for *.dock.test in one command+188 −20
TueKILNfix: evict by size, not by count+35 −29
MonTIDErefactor: split recovery into scan and replay+221 −264
MonWRENfeat: link each note to its pull request+73 −11
14:02TIDEfix(wal): fsync the directory after a segment rotates+48 −12
13:37KILNfeat: content-addressed cache hits across branches+312 −41
12:55WRENrelease v2.4.0: group notes by conventional scope+96 −30
11:20PRSMperf: diff two traces in O(n log n), was O(n^2)+140 −188
10:48LOOMfix: fair scheduling starved one tenant under burst+57 −9
09:31TIDEbench: 1.92 GB/s sequential append on M3, one core+22 −3
09:04FERNfeat: union types and exhaustive match+406 −77
08:16SLABdocs: explain generation checks with a diagram+64 −5
TueDOCKfeat: wildcard TLS for *.dock.test in one command+188 −20
TueKILNfix: evict by size, not by count+35 −29
MonTIDErefactor: split recovery into scan and replay+221 −264
MonWRENfeat: link each note to its pull request+73 −11
ACT ACTIVITY · 52 WEEKS1,837 COMMITS
RUST 43%GO 28%TYPESCRIPT 25%ZIG 4%
BY HOUR · CET
0006121823
STREAK 140DBEST DAY 20LESS MORE
TIP Type TIDE and press Enter, or hover a repoLAST PUSH 14:02 · tidewaterHIRE NOA <GO>
SESSION LIVENKESSLING@TERMINALDATA DEMOROTTERDAM, NLRTM 14:22:07 · UTC 12:22
TIDE4,812▲3.4%RUSTKILN2,207▲1.8%GOWREN1,045▲6.1%TYPESCRIPTLOOM1,390▼0.6%TYPESCRIPTPRSM961▲2.2%RUSTFERN612▼1.4%ZIGSLAB388▲0.9%RUSTDOCK274▼2.3%GOTIDE4,812▲3.4%RUSTKILN2,207▲1.8%GOWREN1,045▲6.1%TYPESCRIPTLOOM1,390▼0.6%TYPESCRIPTPRSM961▲2.2%RUSTFERN612▼1.4%ZIGSLAB388▲0.9%RUSTDOCK274▼2.3%GO
>Noa Kessling · Systems engineer · Rotterdam, NL
DES NOA KESSLING · SYSTEMS ENGINEEROpen to work from Nov 2026

Nine years on databases and developer tooling. Currently independent, previously staff engineer on a payments ledger.

1,837CONTRIBUTIONS · 12M
11.7KSTARS ACROSS REPOS
412PULL REQUESTS MERGED
GP COMMIT RATE · 7-DAY ROLLING · WEEKLY CANDLES
MOST TOP REPOS★ · 7D
WIRE LATEST COMMITSLIVE
14:02TIDEfix(wal): fsync the directory after a segment rotates+48 −12
13:37KILNfeat: content-addressed cache hits across branches+312 −41
12:55WRENrelease v2.4.0: group notes by conventional scope+96 −30
11:20PRSMperf: diff two traces in O(n log n), was O(n^2)+140 −188
10:48LOOMfix: fair scheduling starved one tenant under burst+57 −9
09:31TIDEbench: 1.92 GB/s sequential append on M3, one core+22 −3
09:04FERNfeat: union types and exhaustive match+406 −77
08:16SLABdocs: explain generation checks with a diagram+64 −5
TueDOCKfeat: wildcard TLS for *.dock.test in one command+188 −20
TueKILNfix: evict by size, not by count+35 −29
MonTIDErefactor: split recovery into scan and replay+221 −264
MonWRENfeat: link each note to its pull request+73 −11
14:02TIDEfix(wal): fsync the directory after a segment rotates+48 −12
13:37KILNfeat: content-addressed cache hits across branches+312 −41
12:55WRENrelease v2.4.0: group notes by conventional scope+96 −30
11:20PRSMperf: diff two traces in O(n log n), was O(n^2)+140 −188
10:48LOOMfix: fair scheduling starved one tenant under burst+57 −9
09:31TIDEbench: 1.92 GB/s sequential append on M3, one core+22 −3
09:04FERNfeat: union types and exhaustive match+406 −77
08:16SLABdocs: explain generation checks with a diagram+64 −5
TueDOCKfeat: wildcard TLS for *.dock.test in one command+188 −20
TueKILNfix: evict by size, not by count+35 −29
MonTIDErefactor: split recovery into scan and replay+221 −264
MonWRENfeat: link each note to its pull request+73 −11
ACT ACTIVITY · 52 WEEKS1,837 COMMITS
RUST 43%GO 28%TYPESCRIPT 25%ZIG 4%
BY HOUR · CET
0006121823
STREAK 140DBEST DAY 20LESS MORE
TIP Type TIDE and press Enter, or hover a repoLAST PUSH 14:02 · tidewaterHIRE NOA <GO>
F3 REPOS · 4 PROJECTS
nkessling / tidewater⑂ mainRust★ 4,812⑂ 211last commit 2h ago
README.mdrendered

# tidewater

Crash-safe write-ahead log for embedded databases.

buildpassingcrate2.1.0msrv1.76licenseMIT

## Why

Group commit batches concurrent writers into one fsync. After a segment rotates, the directory is fsynced too, so a crash can never leave a segment the log cannot find.

## Install

$ cargo add tidewater

## Numbers

workloadtidewaterfsync each write
append 4 KiB1.92 GB/s0.21 GB/s
p99 commit2.1 ms9.8 ms
recovery 8 GB3.4 s11.0 s

Runs under three production databases and one payments ledger.

COMMITS · main8 shown
  1. fix(wal): fsync the directory after a segment rotates
    a41f9c2 · 2h ago
  2. Merge #412: group commit for concurrent writers
    9e03b71 · 1d ago
  3. group: wake all waiters on one fsync
    c7d2a18 · 1d ago · feature branch
  4. group: batch writers behind a ticket lock
    51b6e40 · 2d ago · feature branch
  5. bench: 1.92 GB/s sequential append on M3
    0f9a3d5 · 3d ago
  6. test: 40k simulated power cuts, 0 lost writes
    e2c84b9 · 4d ago
  7. release v2.1.0v2.1.0
    7b19f06 · 6d ago
  8. refactor: split recovery into scan and replay
    3ad50ce · 8d ago
ACTIVITY · 26 WEEKS · TIDE
README · scroll to continue8 files · 8 recent commits · crate 2.1.0
DEPTH STACK · ORDER BOOK7 SHIPPING · 7 LEARNING

What I build with, by years in production.

Read it like an order book. Left: tools I have shipped and supported in production. Right: what I am learning now, and where I use it.

TOOLWHEREYEARS
PostgresLOOM · ledger at Norrvik Pay9.0Y
TypeScriptWREN · LOOM8.0Y
GoKILN · DOCK7.0Y
RustTIDE · PRSM · SLAB6.0Y
KubernetesDOCK · platform at Harbourmeal5.0Y
TerraformEvery client since 20214.0Y
OpenTelemetryPRSM3.0Y
TOOLWHEREYEARS
io_uringShipping in TIDE 2.x2.0Y
ZigFERN1.5Y
WebAssemblyFERN in the editor1.5Y
CRDTsReading group, prototypes1.0Y
TLA+Modelling TIDE recovery0.8Y
eBPFProfiling side project0.5Y
NixReproducible dev shells0.5Y
SCRN WORK · SCREENER6 OF 8 SHOWN

Every project, screened like a stock.

Filter by language, sort any column, and hover a row for the preview. Each row opens the full case study.

BENCH BEFORE / AFTER01 / 04

Before and after, measured.

Each project has one number that mattered. Scroll to draw the after line over the before line.

  1. TIDEAppend throughput by record size9.1x
  2. KILNMedian CI time, 30 days6.1x
  3. LOOMQuiet tenant p95 pickup during a burst1,079x
  4. PRSMDiff time by trace size1,166x
TIDE · APPEND THROUGHPUT BY RECORD SIZE
9.1xmore throughput
BEFORE 0.26 GB/sAFTER 1.92 GB/s
00.5381.081.612.15
record size, 256 B → 64 KiBfsync each write vs group commit, M3, one core
HIST CAREER · 2015–NOWSCOPE INDEX 0–10

Career, as a price history.

The line is scope: systems I owned, people who depended on them, and what broke if I got it wrong. Scroll to move through the years.

SCOPE · NOW9.4▲ 0.8 vs last role
2015 – 2017

Westhaven University

MSc, distributed systems

Thesis on crash consistency in log-structured storage. Graduated cum laude.

RESULTCum laude
2017 – 2018

Quaymark Health

Software engineer

On-call and reliability for patient messaging. Cut pages from eleven a week to one.

RESULT11 → 1 pages / wk
2018 – 2020

Postquill

Backend engineer

Queues and delivery for 60 million emails a month. Wrote the fair scheduler.

RESULT60M emails / mo
2020 – 2022

Harbourmeal

Senior engineer, platform

Built the internal build cache that became kiln. Owned CI for 40 engineers.

RESULTCI 6x faster
2022 – 2025

Norrvik Pay

Staff engineer, ledger

Led the move of the payments ledger to an append-only log. Zero reconciliation breaks in 30 months.

RESULT€4.1B settled / yr
2025 – Now

Independent

Systems engineer

Durability audits, build caches and queues for payments and health companies. Maintainer of tidewater and kiln.

RESULT6 clients
OSS UPSTREAM · PULL REQUESTSLAST 10

Pull requests to other people’s projects.

Most of my best work is small fixes in libraries everyone depends on. Here are the last ten.

0MERGED UPSTREAM
0PROJECTS
0REVIEWS GIVEN
0MAINTAINER ON
MERGE RATE
93%
2026-09-11harbor-http#2291Stop leaking a connection when a request body errorsMERGED+38 −6
2026-08-28quill-orm#881Batch inserts inside one transaction by defaultMERGED+142 −51
2026-08-19tern-db#4410Document fsync semantics on macOSMERGED+64 −2
2026-08-02sandpiper-rpc#1207Deadline propagation across streaming callsOPEN+310 −44
2026-07-21marten-cli#356Respect NO_COLOR in every subcommandMERGED+27 −19
2026-07-09larkspur-trace#998Sampling that keeps every error spanMERGED+205 −88
2026-06-30tern-db#4377Crash test for directory sync after renameMERGED+96 −0
2026-06-14quill-orm#842Change default isolation level to serializableCLOSED+12 −12
2026-05-27harbor-http#2204Configurable header size limitMERGED+51 −9
2026-05-03osprey-cache#610Evict by bytes, not entriesMERGED+77 −31
NOTE WRITING · RESEARCH NOTES8 NOTES

Research notes.

Short write-ups of things that broke and how they got fixed. Plain language, real numbers.

RATE CLIENTS · ANALYST NOTES6 NOTES

What clients wrote afterwards.

Filed like analyst notes: the rating, the result it was based on, and who wrote it.

CONSENSUS6 OF 6 · HIRE AGAIN
0 HOLD · 0 PASS
RATING · HIRE AGAIN0 lost writes since
“Noa found the durability bug we had been blaming on hardware for a year, fixed it, and left us a crash test so it stays fixed.”
Priya RamanCTO · Vantle Ledger
RATING · HIRE AGAINCI 18 m → 3 m
“Our CI went from a coffee break to a sip. The sizing guide alone saved us a quarter of platform work.”
Tomasz WieczorekHead of Platform · Harbourmeal
RATING · HIRE AGAINHandover in 2 days
“Clear writing, clear pull requests, and no surprises. The handover doc read like a good README.”
Amara OkaforEngineering Manager · Norrvik Pay
RATING · HIRE AGAINp95 41 s → 38 ms
“The fair queue change was eight lines and it ended a year of support tickets about slow emails.”
Jonas BrekkeStaff Engineer · Postquill
RATING · HIRE AGAIN−48% code shipped
“Noa asks the question that makes the design smaller. We shipped half the code we planned and it was faster.”
Lucía FerreyraVP Engineering · Tallyroom
RATING · HIRE AGAIN11 → 1 pages/week
“Pages went from eleven a week to one. The team finally took real holidays.”
Daniel OseiSRE Lead · Quaymark Health
SPEC USES · SPEC SHEET5 CATEGORIES

What’s on the desk.

The tools and habits behind the work. Nothing sponsored, everything used this week.

user
nkessling
host
rotterdam, nl
uptime
9 years in production
shell
zsh 5.9
langs
rust go ts zig
editor
modal
focus
storage · build · queues
status
open from nov 2026
Laptop
14-inch, 36 GB, the one with the good keyboard
Desk
Oak, standing, set to 104 cm
Keyboard
Split, 42 keys, linear switches
Screen
27-inch 5K, one only
Test box
Old mini PC running the crash simulator overnight
AVL AVAILABILITY · STATUS BOARDUPDATED WEEKLY

Open slots, by month.

I take two engagements at a time. Green weeks are free. Pick a type of work and a month, and I will reply within a day.

OCT
BOOKED
NOV
2 WK OPEN
DEC
2 WK OPEN
JAN
OPEN
FEB
OPEN
MAR
OPEN
SELECTEDDurability audit · 2 weeks · from €9,000BOOK A SLOT <GO>
HELP FAQ · MAN PAGE6 ENTRIES

HELP, before you ask.

The questions people ask on the first call, answered in plain words.

Yes. I am in Rotterdam (CET) and work with teams from UTC−5 to UTC+3. I keep four hours of overlap every day.

Fixed scope and fixed price for audits and sprints, monthly for advisory. You get the price before we start, in writing.

Most of the work is design and measurement, not language. I have shipped the same fixes in Java, Python and C#.

Yes, and case studies only mention clients who said yes in writing. Numbers are shared only with permission.

During an engagement, yes, as second line. It is the fastest way to learn where a system really hurts.

Check the status board above. A two-week audit usually starts within three weeks of the first call.

EOF END OF PAGE · NKESSLING↑ TOP

Type CONTACT, or just write.

hello@example.com
>

STATUS

Open to work from Nov 2026

Replies within one working day

RTM 17:25:19 · UTC 15:25

COLOPHON

Set in Geist, Geist Mono and Doto.

Charts drawn from commit data, live or demo.

No trackers, no cookies.

Create a free website with Framer, the website builder loved by startups, designers and agencies.