Skip to content

Instantly share code, notes, and snippets.

View jonasvanderhaegen's full-sized avatar
🏠

Jonas Vanderhaegen jonasvanderhaegen

🏠
View GitHub Profile
@jonasvanderhaegen
jonasvanderhaegen / peppol-belgium-2026.md
Last active June 30, 2026 05:27
Peppol e-invoicing in Belgium (2026): is it free for a small business, and what's the cheapest option?

Peppol e-invoicing in Belgium (2026): is it free, and what's the cheapest way for a small business?

Researched and fact-checked on 30 June 2026. Figures are from official Belgian sources (FPS Finance, einvoice.belgium.be) and provider pages; see Sources at the bottom.

TL;DR

  • You cannot plug into Peppol "directly." Belgian law requires you to send through an approved Peppol service provider (an Access Point). Becoming your own certified Access Point isn't realistic for a single business.
  • The Peppol network itself is free. The only thing that costs money (or not) is the Access Point you send through.
  • There is a genuinely free route: Let's Peppol, a non-profit Access Point, €0, with no published volume limits. Several commercial tools also have free tiers.
  • Cheapest paid: e-invoice.be at ~€0.18/invoice (pay-per-use), or flat subscriptions from ~€1.50 to €5/month.
@jonasvanderhaegen
jonasvanderhaegen / nub-oddities.md
Created June 28, 2026 19:05
nub v0.2.7 oddities (pnpm -> nub monorepo migration)

nub oddities log

Notes collected while migrating a pnpm monorepo (Astro + Nuxt 4 workspace) to nub as the package manager. Recording these for future reference and upstream bug reports.

Environment

  • nub v0.2.7 (homebrew, /opt/homebrew/bin/nub)
  • node v26.4.0
  • macOS Darwin 25.5.0 arm64
  • Repo: pnpm workspace (pnpm-workspace.yaml with catalog: using npm: aliases, overrides, peerDependencyRules, allowBuilds, patchedDependencies, .pnpmfile.cjs)
@jonasvanderhaegen
jonasvanderhaegen / nub-migration.md
Created June 28, 2026 13:12
Migrating from pnpm (Corepack) to Nub on macOS — uninstall, optimize, and the Laravel Herd nvm question

Migrating from pnpm (Corepack) to Nub on macOS

Notes from replacing pnpm with Nub — the all-in-one Node.js toolkit (runtime + package manager + Node version manager) — on an Apple Silicon Mac running Laravel Herd. Written June 2026, Nub v0.2.7.

TL;DR

  • pnpm installed via Corepack is not an npm/Homebrew package — you "uninstall" it with corepack disable pnpm, then delete its store at ~/Library/pnpm.
  • Install Nub outside any version-managed Node (Homebrew/curl), or it ends up trapped inside a Node it's supposed to manage.
  • Nub can fully replace nvm, but Laravel Herd's bundled nvm can't be cleanly uninstalled as a separate component — Herd owns it. You can only make it dormant.
@jonasvanderhaegen
jonasvanderhaegen / rust-sccache-r2-caching.md
Created June 28, 2026 12:32
Persistent, cross-project Rust CI caching with sccache + Cloudflare R2 (sccache S3 backend, container legs, cold-vs-warm, cross-repo sharing) — with mermaid diagrams

Persistent, cross-project Rust CI caching with sccache + Cloudflare R2

How to stop a Rust release pipeline from recompiling the world on every run — by caching compiled artifacts in S3-compatible object storage (Cloudflare R2), shared across every run and every repo in an org.

Generic writeup of the technique. Replace <ACCOUNT_ID>, bucket names, and secret names with your own.


The problem

@jonasvanderhaegen
jonasvanderhaegen / mcp-vs-lsp-and-local-models.md
Created June 17, 2026 11:02
MCP, LSP, custom protocols, and local models — a mental model

MCP, LSP, custom protocols, and local models — a mental model

A short, diagram-first explainer untangling four things people routinely conflate: MCP, LSP, rolling your own agent↔tool protocol, and whether a model "knows" MCP.


1. MCP is not a transport layer

@jonasvanderhaegen
jonasvanderhaegen / infisical-backend-idle-ram.md
Last active June 13, 2026 04:06
Infisical self-hosted backend idle RAM (600-800MB): why the V8 heap cap is a red herring for RSS, and what actually works (mem_limit + scheduled restart). Upstream #4795

Infisical self-hosted backend: taming idle RAM (600–800 MB)

The self-hosted Infisical backend (infisical/infisical) sits at 600–800 MB RSS even when idle. On a small/single-user box it's often the single fattest process on the machine. Here's the diagnosis, plus an honest account of what actually controls it and what doesn't.

Symptom

$ docker stats --no-stream infisical-backend
@jonasvanderhaegen
jonasvanderhaegen / board-alignment-2026-07-06.md
Last active July 6, 2026 19:21
nautilus-tastytrade — strategy engine vision (AI builder + deterministic compute-DAG)

Board alignment addendum (2026-07-06)

This file records how the vision in strategy-vision.md maps onto the live GitHub board after the 2026-07-05 program restructure (epic #37), and what changed on 2026-07-06. The vision doc itself is unchanged; treat this as its tracking companion.

Status since the vision doc was written

  • Live foundation VALIDATED during market hours (2026-07-06): quotes, trades, 1m bars flowing and persisted with real timestamps (#23 market-hours pass; fixes #75, #77, #79).
  • Recorder professionalization program filed AND half-executed the same day (epic #80): internal bars merged (#64, closes #49), per-symbol quote/Greeks sampling + candle upsert + TimescaleDB compression merged (#88). Remaining lanes: policy doc #81, sampling cutovers, dynamic scanner universe #83, live Greeks #86.
  • DAG engine foundation merged: schema + canonical definition_hash (E-01), static validator (E-02 groundwork), op registry + indicator allowlist (E-03), versioned storage with migration 0007 (E-04).
@jonasvanderhaegen
jonasvanderhaegen / agent-org-redesign_diagrams.md
Last active July 6, 2026 06:24
agent-org-redesign interpretation (2026-06-10)

Agent org — operator entry point and flow diagrams (2026-06-10)

Entry point — how the operator gets the ball rolling

  1. Open soloterm and select (or create) the project.
  2. Spawn the ORCHESTRATOR as a Solo agent: agent tool "Claude" (claude --dangerously-skip-permissions), name it orchestrator, switch it to Opus (/model opus or spawn arg). It MUST be a Solo-managed process — wake timers deliver into its PTY; a plain terminal session cannot be woken.
  3. Type one message into its PTY: You are the conductor. Mission: <goal, constraints, repos>. The /orchestrator skill auto-invokes: it anchors the board, plans lanes into todos, spawns Codex workers full-auto, arms idle-wakes, and goes quiet.
  4. From then on the operator touches three surfaces only:
    • QUESTIONS pad (+ one notification per blocking item) — decisions the org needs from you;
  • the todo board — live status, milestone comments, verdicts;
@jonasvanderhaegen
jonasvanderhaegen / the-period-2026-05-29-to-06-03.md
Last active June 3, 2026 21:50
The period, May 29 - June 3 2026: six days of sessions read back against 'The method' (where it holds, where it diverges)

The period: 2026-05-29 → 06-03, read back from the sessions

This is my read of six days of Claude Code sessions (Friday May 29 through June 3, 2026), written against "The method", which was extracted from a single arc on the final day. The question: does the week match the doc, and where doesn't it.

Method for this doc: five parallel analysis agents read the prompt timelines and transcripts per project area (the code-graph indexer, the Go daemon and binaries, the web monorepo, the workflow library, misc), cross-checked against git logs, release tags, and the gist trail. Numbers below are measured, not estimated, unless marked.

1. What the corpus actually is

Numbers first, because they reframe the whole question:

@jonasvanderhaegen
jonasvanderhaegen / vibe-method.md
Last active June 3, 2026 21:45
The method: operator working style on skyline (prompting patterns, handling/debugging/expanding/improving evaluation, scorecard, .sky workflow skeleton)

The method: how this project gets built, and an evaluation of it

Notes on an operator's working style, extracted from the skyline sessions (benchmarks, five shipped features, a release, an LSP client, six research gists, a blind re-test). Written as raw material for a .sky workflow that reproduces the loop: dig deep and research first, ship, then prove it worked.

1. The prompting style, observed

The prompts are short, lowercase, typo-tolerant, and high-trust: "go", "make it