Work

Things I design & build.

  • Boon - Timeless & Playful Language

    One language for web apps, CLIs and hardware

    Boon is a declarative language where the runtime remembers values across reloads, enabling hot-reloading and state persistence without a database.

    Statically typed with a Factorio-inspired visual debugger. Other inspirations described in the blog post The Boon of Dataflow.

    Currently powered by a Rust interpreter with a custom lock-free actor-based engine. Exploring Differential Dataflow as an alternative — engines switchable in the Playground.

    Related work
    1. MoonZoon — powers Boon Playground and the HTML renderer; its signals and styling influenced Boon’s design
    2. UI Parser — extracts UI metadata from web pages for UI recreation and visual testing in Boon
    3. RayBox — 3D SDF renderer that will render Boon UIs with real depth and lighting
    4. BoonComputer — RISC CPU on FPGA proving Boon describes hardware as naturally as software

    Boon interval example

    language
    rust
    declarative
    persistent
    WIP
  • NovyWave waveform viewer on Linux

    NovyWave

    Modern GTKWave alternative

    A modern waveform viewer for FPGA and hardware debugging. Combines WebAssembly with Tauri so large captures stay fast while the UI remains portable.

    Cross-platform (Linux, macOS, Windows, browser + remote server). Plugin-based architecture. Built with MoonZoon, funded by NLnet Foundation.

    WIT interface for a Wasmtime plugin

    waveform
    viewer
    wasm
    fpga
    tauri
    WIP
  • MoonZoon logo

    MoonZoon

    Rust fullstack framework

    Fullstack Rust without HTML, CSS, or JavaScript. Wasm frontend with signals (no Virtual DOM), native Rust backend. Typed routes and UpMsg/DownMsg for real-time communication. Auto-reload with mzoon CLI. Also works as frontend-only for static hosting.

    Boon Playground and NovyWave are built with MoonZoon. It also served as the foundation for a Norwegian bachelor thesis.

    MoonZoon history

    After maintaining Seed (early Rust frontend framework), I got frustrated with VirtualDOM and Elm-style patterns. Even created Rust React Hooks — with fewer limitations than JS ones — but still didn’t feel right. Writing HTML/CSS almost directly felt worse the more I dealt with CSS interactions and browser inconsistencies — complexity kept growing instead of shrinking.

    Signals and simplified styling felt better. Typed messages simplified frontend-backend communication. That became MoonZoon in 2021. Since then I’ve pushed its limits: web workers with shared memory, desktop apps, animations, JS interop — and contributed to wasm-bindgen along the way.

    Read more in MoonZoon: Foundations and MoonZoon: 2021–2025.

    Counter button example

    Send message example

    rust
    fullstack
    framework
    wasm
    signals
  • BoonComputer - RISC CPU on FPGA

    BoonComputer

    RISC CPU on FPGA — designed in Boon, running Boon

    Proving Boon can describe hardware as naturally as software — the same language for web apps and CPU architecture.

    Roadmap:

    1. Write a transpiler from Boon to Verilog for simple circuits
    2. Test inside a forked DigitalJS with UART debugging and Wasm Yosys
    3. Test on real hardware with peripherals like displays — for fun and confidence
    4. Build SuperCounter (web app, server, CLI, FPGA) all in Boon, working together
    5. Then the real RISC work begins

    Ultimate goal: run Boon in Wasm executed on a CPU designed in Boon.

    Future possibility: MRAM integration — instant resume, zero data loss, minimal standby power.

    Raspberry Pi and iCESugar FPGA

    boon
    risc
    fpga
    cpu
    hardware
    WIP
  • RayBox - 3D web UI with SDF and WebGPU

    RayBox

    3D (web) UI renderer with SDF and PBR

    RayBox renders UI as real 3D objects using Signed Distance Functions and Physically-Based Rendering.

    The idea is simple: buttons, inputs, and dialogs should be physical:

    • A button has actual depth and sits closer to the camera.
    • A dialog floats in front of content and casts real shadows.
    • An inset effect emerges naturally from geometry.

    The renderer will use Slang as the shading language, targeting both web and native GPU backends.

    Motivation: Building a cross-platform graphics library while exploring more intuitive GUI APIs. Future applications may include simple games and 3D printing.

    rust
    slang
    wasm
    sdf
    3d
    WIP
  • Prompter web interface

    Prompter

    Web UI for Claude Code sessions

    Prompter is a Rust CLI that wraps Claude Code in a pseudo-terminal while exposing a web dashboard for monitoring and interacting with AI sessions.

    Why I built it:

    • Mobile AI access: Tunnel the web interface to your phone and interact with your CLI AI agent from anywhere - on a tram, in a waiting room, or away from your desk
    • Agent supervisor: Automatically nudges idle AI agents and protects critical files via content hashing - preventing agents from “cheating” by modifying deterministic tests meant to verify their own work
    • Audit trail: Stores complete prompt history for compliance and auditing
    rust
    cli
    ai
    pty
    axum
    htmx
  • LocalSearch - client-side full-text search

    LocalSearch

    Rust full-text search library for the browser (Wasm)

    Fast searching and autocomplete without server round-trips.

    Performance: indexes and searches 20,000 film titles in a few milliseconds.

    I was hired to write this library to mitigate problems with slow or DDoSed backend servers — too many users hammering search queries.

    Also integrated in the Persons.pro prototype for better UX, decentralization, and reduced backend costs.

    LocalSearch API

    search
    full-text
    autocomplete
    rust
    wasm
  • UI Parser overlay visualization

    UI Parser

    Extract UI metadata from web pages

    UI Parser extracts visual metadata from web pages for UI recreation in Boon or other languages, and for integration tests that verify rendered output.

    What it captures:

    • Element bounds and positions
    • Computed styles
    • Text and pseudo-element sizes
    • Actually used fonts
    • Layout relationships

    A browser extension adds a new tab to DevTools, similar to the standard Elements panel.

    UI Parser architecture

    rust
    extension
    cdp
    typescript
    mcp
    WIP
  • Persons.pro dashboard concept

    Persons.pro

    The app for freelancers, open-source creators and digital product makers

    Hire a freelancer? Platform takes 10-20%. Sponsor a creator? 5-12%. Sell an ebook? Up to 90% gone. Plus 3-5% payment processing fees.

    The fix:

    • Modern banking or stablecoins for near-zero fees.
    • Escrow with visible funds that can earn returns.
    • Verified identities, fewer scams.

    Future: Local-first app with Boon, LocalSearch, and nostr or iroh. Eventually: Concordium for KYC and transactions.

    hire
    sponsor
    sell
    figma
    WIP