Skip to content
Juno Vale
Available for work

Software engineer

Juno Vale

I build fast, boring, reliable web systems — and make them feel considered.

Reliable systems that feel considered.

Work, with the numbers and the decisions.

Ledgerline dashboard showing an invoice table beside a monthly revenue bar chart.
Fig. 01.1 · Ledgerline, 2025

Project 01 · 2025

Ledgerline

Rebuilt the invoicing dashboard for a B2B billing product so finance teams stopped exporting to spreadsheets.

Role
Lead engineer
Stack
TypeScript · Next.js · PostgreSQL · Redis
Result
1.8s → 240ms p95 dashboard load

Decision

Kept the reporting queries in Postgres with three materialized views refreshed on write, instead of adding a separate analytics store. One database to operate, and the numbers on screen are always the numbers in the ledger.

Fieldnote mobile screens showing a survey form and a sync status list.
Fig. 02.1 · Fieldnote, 2024

Project 02 · 2024

Fieldnote

An offline-first data-collection app for survey teams working without reliable signal.

Role
Full-stack engineer
Stack
React Native · TypeScript · SQLite · Node.js
Result
12,400 weekly active collectors

Decision

Chose last-write-wins per field, not per record, with a visible conflict log. CRDTs were on the table; per-field merges covered every real conflict we saw in two months of pilot data, at a tenth of the code.

Relay console listing webhook attempts with status codes and a replay button.
Fig. 03.1 · Relay, 2023

Project 03 · 2023

Relay

A webhook delivery service with retries, signing, and a replay console for customer support.

Role
Backend engineer
Stack
Go · PostgreSQL · AWS SQS · Terraform
Result
99.98% delivery over 14 months

Decision

Stored every attempt as an append-only row and built the replay console on top of it. Support could answer "did you send it?" themselves, which removed most of the tickets that reached engineering.

Years shipping
6+
Projects delivered
24
Uptime, last 12 mo
99.9%

How I work.

  1. Ship boring

    Ship the boring version first.

    Ledgerline launched on plain Postgres views in two weeks; the clever caching layer it was meant to replace never got built.

  2. Measure

    Measure before you optimise.

    One query plan showed a missing index behind 80% of Ledgerline's latency — a one-line fix instead of a new service.

  3. Leave it better

    Leave the system easier to change.

    Relay's replay console and runbook let support close delivery tickets without paging an engineer.

Stack and tooling.

Languages, runtimes, data stores, infrastructure, and tools
Group Instruments
Languages TypeScript · JavaScript · SQL · Python
Runtime Node.js · React · Next.js · Astro
Data PostgreSQL · Redis · MongoDB
Infra Docker · AWS · Cloudflare · GitHub Actions
Tools Git · Vitest · Playwright · Figma

Open to work.

Email is the fastest way to reach me. Tell me what you are building and where it hurts.

Replies within two working days