Lasse Maile

I build systems that do the hard part locally — static analysis, on-device models, and software for people working outside, on a phone, in the rain.


Selected work

VScan

2026 · open source

A dependency scanner that answers "can this CVE actually be reached from my code?"

Pythontree-sitterOSV · KEV · EPSS · NVDPublic repo

Most SCA tools stop at "you depend on a package with a known CVE". VScan builds a knowledge graph of the repository — files, dependencies, functions, call edges, HTTP entry points, docs — then runs a deterministic BFS from every entry point to see which dependencies are genuinely on a call path. Findings are correlated against OSV, flagged against CISA KEV, scored with EPSS, and ranked so the reachable and actively-exploited ones come first.

Python analysis is deep (stdlib ast, cross-file call resolution, single-hop method resolution with a proven receiver). JavaScript and Go resolve calls across files, PHP within a file. Transitive dependencies are enumerated from lockfiles and tagged, so a vulnerability three levels down still gets a verdict. The only layer that touches the network is the correlator.

Live · reachability engineReal BFS, in your browser. Sample graph, cached advisory data — no LLM.

Vera

2026 · UNESCO Youth Hackathon

An on-device media-literacy coach that teaches you how to check a claim, instead of telling you the verdict.

KotlinAndroid 8+On-device SLMGPL-3.0Public repo

Verdict-style fact-checking can't keep pace with generative AI, and it trains dependence rather than skill. Vera runs a small language model entirely on the phone: nothing is uploaded, it works offline after setup, and it costs nothing to run. Briefings summarise news from sources you pick and show each outlet's ownership and political leaning. "Check what you heard" takes a typed or spoken claim, pulls a deliberately diverse set of outlets, and coaches you on weighing them. A daily prebunking game and a SIFT Socratic coach handle the training side.

Built for the UNESCO Youth Hackathon 2026 and published as open source on IzzyOnDroid.

ScreenshotsPixel 7a / GrapheneOS. Green digits are the refresh-rate overlay, not the app.

LLM from scratch

2026

A decoder-only transformer with the layers written by hand — no nn.TransformerBlock, no tokenizer library.

PythonPyTorch tensors only8L · 8H · 512d · 512ctxPrivate repo

Linear, Embedding, LayerNorm, Dropout and CausalSelfAttention are all implemented from the tensor level up, then stacked into an 8-layer, 8-head, 512-dim model with a 512-token context. Byte-pair encoding is trained from scratch rather than imported — the merge table below is the real one, learned on Shakespeare. Generation supports temperature and top-k sampling with a KV cache and a sliding context window; training runs with AdamW at 3e-4 and mixed precision, char-level and BPE variants side by side.

Live · BPE + causal attentionThe real merge table, applied in your browser. Attention weights are illustrative, not the trained model.

Wayvio

2026 · deployed pilot

Config-driven driver guidance and live fleet tracking for vehicle loading at outdoor facilities.

FastAPILeaflet · WebSocketsSQLite, multi-tenantLocal OllamaEN · DE · PLPrivate repo

Drivers follow a step-by-step workflow on their phone; dispatchers and the lab watch every truck, run, sample and document update in real time over WebSockets. Positions come from the browser's Geolocation API and land on a Leaflet site map drawn over OpenStreetMap.

The engine is domain-agnostic. A fixed library of primitive step types — QR scan, form, branch, confirm, checklist, info, photo upload — is hardcoded; everything company-specific is config: the map, the branching workflow, the fields, thresholds and product types. Bulk loading is the reference deployment, shipped as one of several onboarding templates. New facilities are built in a visual editor, with no code changes and no server restarts. Storage is three-tier — global auth, a global facility registry with versioned flows, and one SQLite database per tenant — with argon2 sessions and permission-gated dashboard, lab and admin surfaces. A local Ollama model powers the in-app driver assistant, grounded in the facility's own documents.

Live · flow engineA real declarative flow, executed step by step. Same primitives as the product; no backend.
ScreenshotsDriver app and dispatcher dashboard.

Public repositories

Everything public on GitHub

Fetched live from the GitHub API, newest first.

Loading…